【问题标题】:Sending broadcast from one process to another process将广播从一个进程发送到另一个进程
【发布时间】:2020-01-08 08:17:28
【问题描述】:

这是我的要求。

我有一个可以被用户强行杀死的应用程序。我希望这个应用程序接收来自其他应用程序的广播以执行某些任务,即使它被强制终止。

我正在尝试使用服务制作另一个应用程序,该服务将在事件 1 分钟内向我的第一个应用程序发送广播。

我的第一个应用程序应该会收到这个广播,即使它被强制终止。

这就是我想要做的。

在第一个应用中:

    BroadcastReceiver dummy = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e("broadcast Received","broadcast Received");
    }
};

 IntentFilter filter = new IntentFilter("com.action.blockapp");
    registerReceiver(dummy,filter);

在我的第二个应用中。

        Intent intent = new Intent("com.action.blockapp");
        intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
        intent.setPackage("com.example.myapplication2");
        sendBroadcast(intent);

当我的应用程序被强制终止时,我无法接收广播。 请提出建议。

【问题讨论】:

    标签: android broadcastreceiver ipc


    【解决方案1】:

    我的观点。您需要在后台运行的服务中声明 revice。您在清单中声明的​​具体修订<receiver android:name=".service.NotifyReceiver" /> </application>

    服务运行时。您可以从下面的 revice 中获取通知

    Intent intent1 = new Intent(context, NotifyReceiver.class); intent1.setAction(action); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);

    希望能帮到你!

    【讨论】:

      【解决方案2】:

      您已在代码中动态注册了您的BroadcastReceiver。当您的应用程序被强制停止时,该代码将不再运行并且您的 BroadcastReceiver 不再存在。它不再注册。

      您将需要创建一个适当的类 extends BroadcastReceiver 并为此创建一个清单条目 &lt;receiver&gt;,并使用与您正在广播的广播 Intent 匹配的 &lt;intent-filter&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-08
        • 2016-02-03
        • 2013-10-18
        • 2016-09-01
        • 1970-01-01
        • 2012-10-17
        • 1970-01-01
        • 2011-07-21
        相关资源
        最近更新 更多