gpt4 book ai didi

android - 仅在设置首选项时处理 NFC Intent

转载 作者:行者123 更新时间:2023-11-29 14:33:16 25 4
gpt4 key购买 nike

我见过几个不同的应用程序(如 NFC TagInfoNFC TagInfo by NXP),它们可以选择在触摸标签时自动启动(或显示在“选择应用程序”列表中)仅当 该选项已在首选项中设置,否则系统似乎完全忽略了 intent 过滤器。

如何在 Android 应用程序中完成此操作?

最佳答案

完整的答案是使用 <activity-alias> 在应用程序的 list 中,如下所示:

<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>

YourActualActivity是您希望能够为其打开或关闭 Intent 过滤器的类。由于您不想禁用整个 Activity,因此您可以使用一个 Activity-alias,在其中放置您想要启用的 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);

在这里changedBooleanPreference是已更改的设置。

请注意,包管理器可能需要一些时间才能使更改生效。这取决于 Android 版本发生的时间和速度(可能还取决于设备的 CPU 速度)。

关于android - 仅在设置首选项时处理 NFC Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com