【发布时间】:2017-05-24 09:38:26
【问题描述】:
我正在尝试使用这段代码打开 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_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]中是这样写的:
在某些情况下,匹配的 Activity 可能不存在,因此请确保您 防止这种情况发生。
他们的意思是“你必须手动打开设置,然后它就可以正常工作”这样的句子吗?
[1]https://developer.android.com/reference/android/provider/Settings.html#ACTION_NFC_PAYMENT_SETTINGS
【问题讨论】: