Android-导出以编程方式创建的广播接收器

时间:2018-09-13 17:53:26

标签: android kotlin broadcastreceiver android-package-managers

我正在尝试通过编程方式使清单中静态定义的接收器动态化。

那是清单中的静态版本:

        <receiver android:name=".receivers.PackageReceiver" android:enabled="true" android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <action android:name="android.intent.action.PACKAGE_REMOVED" />
                <action android:name="android.intent.action.PACKAGE_CHANGED" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="package" />
            </intent-filter>
        </receiver>

这就是我在代码中做到的方式:

        val intentFilter = IntentFilter()
        intentFilter.addAction(ACTION_PACKAGE_ADDED)
        intentFilter.addAction(ACTION_PACKAGE_REMOVED)
        intentFilter.addCategory(CATEGORY_DEFAULT)
        intentFilter.addDataScheme("package")
        registerReceiver(PackageReceiver(), intentFilter)

当安装/卸载软件包时,不会触发编程版本,而静态软件包是。我认为这是因为第一个版本已导出-如何在代码中实现此目的?

0 个答案:

没有答案