android - 如何停止响应 Android 中的意图过滤器
问题描述
我通过以下方式在 AndroidManifest.xml 文件中添加了意图过滤器,
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="upi"
android:host="pay" />
</intent-filter>
假设从商家端发起的意图调用,我想要,这个移动应用程序不应该从以下场景的已安装应用程序列表中列出:
客户未注册,只是从 Playstore 下载了应用程序。
那么,请建议我如何从 android 活动中动态添加上述意图过滤器?
解决方案
假设它是一个具有意图过滤器的活动:您可以启用或禁用该活动:
您可以在清单中默认禁用它:
<activity
android:enabled="false"
...>
<intent-filter ... />
</activity>
要以编程方式启用它:
val componentName = ComponentName(context.applicationContext, MyActivity::class.java)
context.packageManager.setComponentEnabledSetting(
componentName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP)
要以编程方式禁用它:
context.packageManager.setComponentEnabledSetting(
componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP)
参考:setComponentEnabledSetting
文档:https://developer.android.com/reference/android/content/pm/PackageManager.html#setComponentEnabledSetting(android.content.ComponentName,%20int,%20int)
推荐阅读
- javascript - Javascript 内容仅可编辑某些类
- python-3.x - 列中间的增量编号
- ms-word - 在 rmarkdown 生成的 MS Word 文档中以对齐对齐方式拉伸行尾
- github - Github 对文档文件夹进行了回购
- python - 立即使用函数的返回值,而不是将其保存为变量作为中间步骤
- amazon-ec2 - 以编程方式订阅 AWS Marketplace 映像
- wordpress - WooCommerce 商店页面缩略图包装
- python-3.x - 寻找子集的算法
- bash - 从文本文件中添加多行后插入 4 个空格
- html - 如何更改 a 的返回类型