从另一个应用程序启动单个BroadcastReceiver

时间:2016-12-22 16:06:40

标签: android service broadcastreceiver

我创建了一个共享一个启动服务的BroadcastReceiver的应用程序。

持有接收者的应用程序没有活动,有接收者类和服务。

以下是清单声明:

        <service
            android:name=".services.PrintService"
            android:enabled="true"
            android:exported="true" />

        <receiver
            android:name=".receivers.MyReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="art.bridge.PRINT_MESSAGE" />
            </intent-filter>
        </receiver>

接收者类

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(ArtAppl.name , "Receiver reached");
        Intent print = new Intent(context, PrintService.class);
        if(intent.getStringExtra("message") != null)
            print.putExtra("message",intent.getStringExtra("message"));
        else
            print.putExtra("message","Message not found");

        context.startService(print);
    }
}

组建另一个应用程序,我尝试启动接收器如下:

        Intent bReceiver = new Intent("art.bridge.PRINT_MESSAGE");
        sendBroadcast(bReceiver);

但接收器没有运行。

我错过了什么吗?我是否必须在清单中设置另一个操作?

1 个答案:

答案 0 :(得分:0)

是否需要将Intent.FLAG_INCLUDE_STOPPED_PACKAGES作为标志包含在内?

请参阅:How to Send BroadCast from one app to another app