运行的时候报如下错误
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;
}
0 个回复