0

在我的应用程序 myApp1 我只有一个接收器

<receiver
    android:name="com.plugins.Plugin">
    <intent-filter android:priority="1000" >
        <action android:name="Plugin.Broadcast" />
    </intent-filter>
</receiver>

如果我将 BroadcastReceiver 从我的另一个应用程序 myApp2 发送到该接收器

Intent activityIntent = new Intent();
activityIntent.setAction("Plugin.Broadcast");
activityIntent.putExtra("appWidgetId", finalAppWidgetId);
sendBroadcast(activityIntent);

它不响应。如果我在 myApp1 中添加一些带有 Launcher 类别的 Activity,主要操作并在安装 myApp1 后运行它,然后接收器工作。为什么会发生?我该如何解决?

答:为了确保收到广播,我需要在我的意图中添加标志:

 i.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
4

1 回答 1

0

从 Android 3.0 (Honeycomb) 开始,出于安全原因,应用程序在至少启动一次(即一个 Activity 已启动)之前无法接收广播。

这样做是为了防止恶意应用程序被安装并在常见的广播(如BOOT_COMPLETEDBATTERY_CHANGED.

因此,myApp1 中的接收器仅在您的 UI 已在该应用程序中至少打开一次时才有效。

于 2013-02-23T17:19:26.267 回答