我见过几个不同的应用程序(如NFC TagInfo和NFC TagInfo由NXP)有一个选项来自动启动(或在"选择程序"列表中显示出来),当标签被触摸只有当该选项在首选项中设置,否则似乎系统完全忽略了意图过滤器.
如何在Android应用程序中完成?
完整的答案是<activity-alias>在应用程序的清单中使用a ,如下所示:
<activity-alias
android:name=".ActivityAlias"
android:targetActivity=".YourActualActivity"
android:enabled="false" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity-alias>
Run Code Online (Sandbox Code Playgroud)
YourActualActivity是您希望能够打开或关闭意图过滤器的类.由于您不想禁用完整活动,因此使用活动别名,在该活动别名中放置要启用的intent过滤器(默认情况下禁用此功能).
在PreferenceActivity中,您可以设置在更改特定设置时调用的侦听器.它然后做这样的事情:
getPackageManager().setComponentEnabledSetting(
new ComponentName("your.package.name", "your.package.name.ActivityAlias"),
changedBooleanPreference ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED :
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
Run Code Online (Sandbox Code Playgroud)
这changedBooleanPreference是已更改的设置.
请注意,包管理器可能需要一些时间才能使更改生效.这取决于Android版本何时以及如何快速发生(也可能取决于设备的CPU速度).
| 归档时间: |
|
| 查看次数: |
1848 次 |
| 最近记录: |