首页 > 解决方案 > 如何停止响应 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 活动中动态添加上述意图过滤器?

标签: 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)


推荐阅读