易软
易软
  • 发布:2023-08-11 15:06
  • 更新:2024-06-04 11:45
  • 阅读:1213

关于targetSdkVersion设置为34后安卓12高版本SDK无法识别NFC的问题解决

分类:uni-app
NFC

按正常的Native.js 方法来调用NFC 在安卓低版本的SDK 是没有问题的,单是当我们将 targetSdkVersion 设置为34 及安卓的API 级别调高后 在代码中

pendingIntent = PendingIntent.getActivity(main, 0, intent, 0);  

这个方法就回出现问题,正常的是有返回的值的,但是升级为高版本SDK 就返回的是null。
标准基座的话是没有问题,但是自定义和正式打包的话就会返回null。因此我们需要将这个方法进行改造

改造为:

var pendingIntent = PendingIntent.getActivity(ESUtils.NFC.mainNFC, 0, _intent, PendingIntent.FLAG_MUTABLE);

将最后一个参数 0 改为 PendingIntent.FLAG_MUTABLE固定值 就可以了

社区有很多的 方法 包括
https://ask.dcloud.net.cn/article/35690
https://ask.dcloud.net.cn/article/35046
https://ask.dcloud.net.cn/question/12942
都可以使用 只需要将 对应的上面的 替换就可以了。
业务逻辑 自己就可以搞定

1 关注 分享
l***@163.com

要回复文章请先登录注册

易软

易软 (作者)

__UUID__
2023-09-20 11:53
易软

易软 (作者)

如果是鸿蒙手机的话 需要添加 设置为
if (parseInt(new IntentFilter("android.os.Build.VERSION.SDK_INT").__UUID__) >= parseInt(new IntentFilter("android.os.Build.VERSION_CODES.S").__UUID__)) {
var pendingIntent = PendingIntent.getActivity(ESUtils.NFC.mainNFC, 0, _intent, PendingIntent.FLAG_IMMUTABLE);
} else {
var pendingIntent = PendingIntent.getActivity(ESUtils.NFC.mainNFC, 0, _intent, PendingIntent.FLAG_MUTABLE);
}
2023-09-20 11:53