【问题标题】:How to stop responding the intent filter in Android如何停止响应 Android 中的意图过滤器
【发布时间】:2020-01-23 19:24:24
【问题描述】:

我在AndroidManifest.xml文件中添加了intent-filter,方法如下,

<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


    【解决方案1】:

    假设它是一个具有意图过滤器的活动:您可以启用或禁用该活动:

    您可以在清单中默认禁用它:

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

    【讨论】:

      猜你喜欢
      • 2016-09-29
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多