在Android上安装应用程序时,我们如何获得通知

时间:2012-01-27 19:54:06

标签: android

我需要在Android设备上安装应用后收到通知。根据应用程序安装与否的状态,我需要更新一些东西。请帮帮我。

由于 KIRAN

2 个答案:

答案 0 :(得分:3)

我相信安装新应用时会广播意图“android.intent.action.PACKAGE_ADDED”。

答案 1 :(得分:0)

我最近遇到了这个问题。这是它对我的工作方式。我的目标是 API 级别 30。我创建了一个广播接收器,它会在设备上安装或卸载应用程序时通知我。

以下是我在 AndroidManifest.xml 中的 Application 标签内的接收器标签。我没有发现 PACKAGE_ADDED 操作对我有用。

<receiver android:name="com.vikasmane.appdatasdk.PackageChangeReceiver" android:exported="true">
        <intent-filter android:priority="999">
            <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/>
            <action android:name="android.intent.action.PACKAGE_CHANGED" />
            <data android:scheme="package"/>
        </intent-filter>
    </receiver>

接收 PACKAGE_CHANGED 所需的查询标记。这可以添加到清单标签下

 <queries>
    <intent>
        <action android:name="android.intent.action.MAIN" />
    </intent>
</queries>

PackageChangeReceiver 接收 PACKAGE_FULLY_REMOVED/PACKAGE_CHANGED。可以使用

检索包名称
 val packageName = intent?.data?.encodedSchemeSpecificPart

这是我的广播接收器

class PackageChangeReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
    // fetching package names from extras
    val packageName = intent?.data?.encodedSchemeSpecificPart
    when (intent?.action) {
        Intent.ACTION_PACKAGE_FULLY_REMOVED -> Toast.makeText(
            context, 
            "${packageName.toString()} uninstalled",
            Toast.LENGTH_SHORT
        ).show()
        Intent.ACTION_PACKAGE_CHANGED -> Toast.makeText(
            context,
            "${packageName.toString()} installed",
            Toast.LENGTH_SHORT
        ).show()
    }
}

您可以在我的存储库 https://github.com/vikasvmane/Launcher 中找到此实现以供参考。