我正在尝试打开NFC Tap& amp;使用这段代码付费页面:
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] https://developer.android.com/reference/android/provider/Settings.html#ACTION_NFC_PAYMENT_SETTINGS
答案 0 :(得分:0)
来自:https://developer.android.com/reference/android/provider/Settings.html#ACTION_NFC_PAYMENT_SETTINGS
ACTION_NFC_PAYMENT_SETTINGS
在API级别19中添加
字符串ACTION_NFC_PAYMENT_SETTINGS
活动行动: 显示NFC Tap&付费设置
这会显示允许用户配置点击和付费设置的用户界面。
在某些情况下,匹配的活动可能不存在,因此请确保您不会受到此保护。
输入:没什么
输出:没什么
常量值:" android.settings.NFC_PAYMENT_SETTINGS"
您的设备不支持ACTION_NFC_PAYMENT_SETTINGS,或至少无法处理。
由于你的minAPILevel是19,因此android RT应支持该动作。但是,操作和NFC设置菜单之间的链接 ALTHOUGH 菜单存在,可能无法建立或无法建立。
尝试使用Settings.ACTION_NFC_SETTINGS
作为操作并查看是否启动。
如果是这样,我预计会出现实施问题。
为了防止例外,我建议使用:
PackageManager packageManager = getActivity().getPackageManager();
if (intent.resolveActivity(packageManager) != null) {
startActivity(<your intent>);
} else {
Log.d(TAG, "No application available to handle requested action.");
}
请参阅:How to check if an intent can be handled from some activity?以获取信用和参考。