Android Broadcast Receiver 跨进程通讯

A应用检测到数据后发送到B应用,B接受展示或者其他操作
实现方案:通过普通广播
项目需求是A应用通过串口接收到的数据发送给B应用,B 在展示以及更改数据。

demo:
我这里的【A 应用 是:dtuservice】 【B 应用是 dtu】
效果图

B应用通过广播接收到的数据

代码A应用

public class TestTask extends BaseTask {
    private String TAG = getClass().getName();
    private String Json = null;
    private Context mContext;

    public TestTask(Context mContext) {
        this.mContext = mContext;
    }


    @Override
    protected void task() {
        super.task();
        Log.d(TAG, "testTask: " + Thread.currentThread().getName());
        Json = "[{\"statename\":\"状态名称\",\"stateico\":\"状态图标名称\"},{\"statename\":\"状态名称\",\"stateico\":\"状态图标名称\"}]";
        while (true) {
            sendBrocastDataJsonMassage(Json);
        }
    }

    private void sendBrocastDataJsonMassage(String dataJson) {
        Intent intent = new Intent();
        intent.setAction("aaa");
        intent.putExtra("dataJsonMassage", dataJson);
        mContext.sendBroadcast(intent);
    }
}

B应用代码 清单文件

<receiver android:name=".broadcastreceiver.ReceiveBroadcast">
            <intent-filter>
                <action android:name="aaa"/>
            </intent-filter>
        </receiver>

广播 静态注册

public class ReceiveBroadcast extends BroadcastReceiver {
    private String TAG = getClass().getName();
    @Override
    public void onReceive(Context context, Intent intent) {
        String stringExtra = intent.getStringExtra("dataJsonMassage");
        Toast.makeText(context, stringExtra, Toast.LENGTH_SHORT).show();
        Bundle bundle = intent.getExtras();
        String dataJsonMassage = bundle.getString("dataJsonMassage", "");
        Log.d(TAG, "接收到的广播为: " + dataJsonMassage);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容