【问题标题】:Intent filter for PACKAGE_ADDED for a specific package特定包的 PACKAGE_ADDED 的 Intent 过滤器
【发布时间】:2016-12-05 01:20:10
【问题描述】:

在我的 Android 应用中,我正在捕捉 PACKAGE_ADDED 广播:

<receiver android:name=".OnAppInstall">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_INSTALL" />
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <data android:scheme="package" />
    </intent-filter>
</receiver>

我的应用只关心特定配套应用的安装。意图中的数据字符串为:package:com.acme.myapp。意图数据Uri是OpaqueUri的一个实例; getHost()、getPath() 和 getQuery() 都返回空值。

我能否以某种方式制作一个仅允许针对一个特定包 ID 的意图的意图过滤器?

【问题讨论】:

    标签: android android-intent android-manifest intentfilter


    【解决方案1】:

    试试下面的。

    <intent-filter>
    <action android:name="android.intent.action.PACKAGE_ADDED" />
    <data android:scheme="package"
          android:sspPrefix="com.acme.myapp" />
    </intent-filter>
    

    这与对应的 API 调用 here 匹配。

    【讨论】:

    • 仅限安卓 4.4+。不过,总比没有好。至少在早期版本中,它不会阻止过滤器工作。
    • 在 5.0 模拟器上运行,使用 sspPrefix 接收器不会触发,没有它会触发:(
    猜你喜欢
    • 2012-10-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 2014-11-16
    相关资源
    最近更新 更多