应用程序启动时在BroadcastReceiver中接收广播Intent(监听哪个Intent?)

问题描述 投票:0回答:1

我正在尝试接收广播意图来检查当前正在启动哪个应用程序。 (为了发送通知/弹出窗口,提醒用户)

在我的清单文件中:

<receiver
      android:name=".domain.background.receiver.OpenedApplicationBroadcastReceiver"
      android:exported="true">
      <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
</receiver>

并在接收器中做一些事情:

class OpenedApplicationBroadcastReceiver : BroadcastReceiver() {


override fun onReceive(context: Context?, intent: Intent?) {
    // do something if it is application xyz
    }
}

但到目前为止这还不起作用。

但是我也很不知道要在我的

<intent-filter>
中放入什么才能接收这样的广播。

我需要更改什么才能使我的代码正常工作?

android broadcastreceiver
1个回答
0
投票

您可以为 ACTION_PACKAGE_ADDED 和 ACTION_PACKAGE_REPLACED 意图注册广播接收器。当安装或替换新软件包时,这些意图会被广播,这将告诉您正在启动应用程序。

@Override
public void onReceive(Context context, Intent intent) {

String action = intent.getAction();
if (action != null && (action.equals(Intent.ACTION_PACKAGE_ADDED) ||action.equals(Intent.ACTION_PACKAGE_REPLACED))) {
    String packageName = intent.getDataString();
    Log.d("PackageChangeReceiver", "Package added/replaced: " + packageName);

    // You can check the package name to find which app is being launched
}

}

这应该在清单文件中完成。

<receiver android: name=".dBroadcastReceiver">
    <intent-filter>
        <action android: name="android.intent.action.PACKAGE_ADDED" />
        <action android: name="android.intent.action.PACKAGE_REPLACED" />
        <data android: scheme="package" />
    </intent-filter>
</receiver>
© www.soinside.com 2019 - 2024. All rights reserved.