intent android.settings.NFC\u支付设置的ActivityNotFoundException
我正在尝试使用以下代码打开NFC Tap&Pay页面上的设置:intent android.settings.NFC\u支付设置的ActivityNotFoundException,android,nfc,Android,Nfc,我正在尝试使用以下代码打开NFC Tap&Pay页面上的设置: startActivity(new Intent(Settings.ACTION_NFC_PAYMENT_SETTINGS)); 在使用Android 7.1.2在LG Nexus 5X上进行测试时,我收到了以下故障: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.NFC_P
startActivity(new Intent(Settings.ACTION_NFC_PAYMENT_SETTINGS));
在使用Android 7.1.2在LG Nexus 5X上进行测试时,我收到了以下故障:
android.content.ActivityNotFoundException:
No Activity found to handle Intent { act=android.settings.NFC_PAYMENT_SETTINGS }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1809)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1523)
at android.app.Activity.startActivityForResult(Activity.java:4228)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(SourceFile:50)
at android.support.v4.app.FragmentActivity.startActivityForResult(SourceFile:79)
at android.app.Activity.startActivityForResult(Activity.java:4186)
at android.support.v4.app.FragmentActivity.startActivityForResult(SourceFile:859)
at android.app.Activity.startActivity(Activity.java:4525)
at android.app.Activity.startActivity(Activity.java:4493)
at ...
嗯,这个崩溃可以用try-catch轻松处理,但更重要的是,当我手动打开这个NFC设置时,代码就像一个符咒一样工作——没有崩溃。为什么?有人对这种行为有什么解释吗
文件[1]中写道:
在某些情况下,匹配的活动可能不存在,因此请确保
防止这种情况
有没有可能他们的意思是“你必须手动打开设置,然后才能正常工作”
[1] 来自:
操作\u NFC\u付款\u设置
在API级别19中添加
字符串操作\u NFC\u付款\u设置
活动行动:
显示NFC点击和支付设置
这显示允许用户配置点击和支付设置的UI
在某些情况下,可能不存在匹配的活动,因此请确保对此进行防护
输入:无
输出:无
常量值:“android.settings.NFC\u支付\u设置”
您的设备不支持或至少无法处理操作\u NFC\u支付\u设置
更新1
由于您的minAPILevel为19,该操作应得到android RT的支持。但是,该操作与NFC设置菜单之间的链接可能未建立或无法建立,尽管该菜单存在
尝试使用Settings.ACTION\u NFC\u Settings
作为操作,并查看它是否启动。
如果是这样的话,我希望会有一个实现问题
为了防止出现例外情况,我建议使用:
PackageManager packageManager = getActivity().getPackageManager();
if (intent.resolveActivity(packageManager) != null) {
startActivity(<your intent>);
} else {
Log.d(TAG, "No application available to handle requested action.");
}
PackageManager-PackageManager=getActivity().getPackageManager();
if(intent.resolveActivity(packageManager)!=null){
星触觉();
}否则{
Log.d(标记“没有可用于处理请求操作的应用程序”);
}
请参阅:以获取信用和参考。不支持此项,这是不正确的。也许现在无法处理,但我在问为什么?当我手动打开设置时,它会工作。不过,它会向用户显示一条消息“转到设置,查找Tap&Pay或移动支付或您的设备供应商创建的任何内容”。您使用哪种MinSDKVersion和TargetSDKVersion?您能否提供一个实际的代码示例“围绕调用”,即调用startActivity的位置?minSDK=19,targetSDK=25。代码在onClickListener中(使用Butterknife)。只有这一行代码,没有更多了。@JerabekJakub请参阅更新。我也会尝试重新构建这个问题,因为我有相同的Android版本DI无法再复制该问题,因为我已经手动执行了。它不起作用,所以我不能检查你的建议-(