i***@freshfresh.ca
i***@freshfresh.ca
  • 发布:2025-10-30 02:07
  • 更新:2025-10-30 02:07
  • 阅读:19

uts 调用 activity,报错找不到。hello uts 里面 demo activity 的 kotlin 类也没有。

分类:uts

运行的时候报如下错误

error ‍[⁠android.content.ActivityNotFoundException⁠]‍ {cause: null, message: "Unable to find explicit activity class {uni.mpaas.scan.demo/uts.sdk.modules.commonNativeScan.FullScreenQRCodeScanActivity}; have you declared this activity in your AndroidManifest.xml, or does your intent not match its declared <intent-filter>?"} at uni_modules/common-native-scan/utssdk/app-android/index.uts:98

主要文件:

<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"  
  // 注意:这里是插件的包名而不是应用的包名  
  package="uts.sdk.modules.commonNativeScan">  
   // 配置权限  

    <application>  
       // 配置service / activity  
       <activity android:name="uts.sdk.modules.commonNativeScan.FullScreenQRCodeScanActivity" android:exported="true">  
        <intent-filter>  
            <action android:name="uts.sdk.modules.demo" />  
            <category android:name="android.intent.category.DEFAULT" />  
        </intent-filter>  
       </activity>  
    </application>  
</manifest>
package uts.sdk.modules.commonNativeScan  

import android.app.Activity  
import android.content.Intent  
import android.widget.Toast  
import com.google.zxing.Result  
import com.king.camera.scan.AnalyzeResult  
import com.king.camera.scan.CameraScan  
import com.king.camera.scan.analyze.Analyzer  
import com.king.camera.scan.util.PointUtils  
import com.king.view.viewfinderview.ViewfinderView.ViewfinderStyle  
import com.king.zxing.DecodeConfig  
import com.king.zxing.DecodeFormatManager  
import com.king.zxing.BarcodeCameraScanActivity  
import com.king.zxing.analyze.QRCodeAnalyzer  

/**  
 * 扫二维码全屏识别示例  
 *  
 * @author <a href="mailto:jenly1314@gmail.com">Jenly</a>  
 * <p>  
 * <a href="https://github.com/jenly1314">Follow me</a>  
 */  
class FullScreenQRCodeScanActivity : BarcodeCameraScanActivity() {  
    // 伴生对象,用于实现静态方法  
        companion object {  
            /**  
             * 打印当前类的包名和类名  
             */  
            fun printPackageAndClassName() {  
                // 获取包名(通过类的全限定名截取)  
                val fullClassName = FullScreenQRCodeScanActivity::class.qualifiedName ?: "未知类"  
                val packageName = fullClassName.substringBeforeLast(".", "未知包")  
                val className = fullClassName.substringAfterLast(".", fullClassName)  

                // 打印信息  
                println("当前包名:$packageName")  
                println("当前类名:$className")  
                println("完整类名(包名+类名):$fullClassName")  
            }  
        }  

    override fun initUI() {  
        super.initUI()  

        // 设置取景框样式  
        viewfinderView.setViewfinderStyle(ViewfinderStyle.POPULAR)  

    }  

    override fun initCameraScan(cameraScan: CameraScan<Result>) {  
        super.initCameraScan(cameraScan)  
        // 根据需要设置CameraScan相关配置  
        cameraScan.setPlayBeep(true)  
    }  

    override fun createAnalyzer(): Analyzer<Result>? {  
        // 初始化解码配置  
        val decodeConfig = DecodeConfig().apply {  
            // 如果只有识别二维码的需求,这样设置效率会更高,不设置默认为DecodeFormatManager.DEFAULT_HINTS  
            hints = DecodeFormatManager.QR_CODE_HINTS  
            // 设置是否全区域识别,默认false  
            isFullAreaScan = true  
        }  
        // BarcodeCameraScanActivity默认使用的MultiFormatAnalyzer,这里可以改为使用QRCodeAnalyzer  
        return QRCodeAnalyzer(decodeConfig)  
    }  

    /**  
     * 布局ID;通过覆写此方法可以自定义布局  
     *  
     * @return 布局ID  
     */  
    override fun getLayoutId(): Int {  
        return super.getLayoutId()  
    }  

    override fun onScanResultCallback(result: AnalyzeResult<Result>) {  
        // 停止分析  
        cameraScan.setAnalyzeImage(false)  
        // 显示结果点  
        displayResultPoint(result)  

        // 返回结果  
        val intent = Intent()  
        intent.putExtra(CameraScan.SCAN_RESULT, result.result.text)  
        setResult(Activity.RESULT_OK, intent)  
        finish()  
    }  

    /**  
     * 显示结果点  
     */  
    private fun displayResultPoint(result: AnalyzeResult<Result>) {  
        var width = result.imageWidth  
        var height = result.imageHeight  

        val resultPoints = result.result.resultPoints  
        val size = resultPoints.size  
        if (size > 0) {  
            var x = 0f  
            var y = 0f  
            resultPoints.forEach {  
                x += it.x  
                y += it.y  
            }  
            var centerX = x / size  
            var centerY = y / size  
            //将实际的结果中心点坐标转换成界面预览的坐标  
            val point = PointUtils.transform(  
                centerX.toInt(),  
                centerY.toInt(),  
                width,  
                height,  
                viewfinderView.width,  
                viewfinderView.height  
            )  
            //显示结果点信息  
            viewfinderView.showResultPoints(listOf(point))  
        }  
    }  

}
export const myApiSync : MyApiSync = function (paramA : boolean) : MyApiResult {  
    UTSAndroid.getDispatcher("main").async(function(_){  
        console.log("当前任务执行在1111",Thread.currentThread().getName())  
        console.log('0000000');  
        let intent = new Intent(UTSAndroid.getUniActivity(),FullScreenQRCodeScanActivity().javaClass);  
        console.log('fffff', intent, UTSAndroid.getUniActivity());  
        try{  
            UTSAndroid.getUniActivity()!.startActivity(intent);  
        }catch(e){  
            console.log('error', e)  
        }  

    },null)  
    console.log("当前任务执行在",Thread.currentThread().getName())  

    console.log('0000000', FullScreenQRCodeScanActivity.printPackageAndClassName());  
    let intent = new Intent(UTSAndroid.getUniActivity(),FullScreenQRCodeScanActivity().javaClass);  
    console.log('fffff', intent, UTSAndroid.getUniActivity());  
    UTSAndroid.getUniActivity()!.startActivity(intent);  

    console.log('111111');  

  // 返回数据,根据插件功能获取实际的返回值  
  const res : MyApiResult = {  
    fieldA: 85,  
    fieldB: paramA,  
    fieldC: 'some message'  
  };  
  return res;  
}
2025-10-30 02:07 负责人:无 分享
已邀请:

要回复问题请先登录注册