Androidアプリ間での通信方法例

目的

AndroidアプリAとBがあるとして、
AからBのServiceを起動し、BのServiceでの処理結果をAで受け取るための方法です。

概要

A: BのServiceをintentに指定して投げます。BroadcastReceiverのonReceiveにてintentからExtraを受け取ります。
B: AのBroadcastReceiverをintentに指定して、Serviceの処理結果をputExtraしてbroadcastします。

実装例

Aサイド

AndroidManifest.xml

<manifest package="com.sample.A">
    <receiver
        android:name=".AsampleBroadcastReceiver"
        android:exported="true" />
</manifest>

Aのサービスを起動させる

Intent intent = new Intent();
intent.setClassName("com.sample.B", "com.sample.B.BsampleService");
startService(intent);

Bからのbroadcastを受け取る
AsampleBroadcastReceiver.java

public class AsampleBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        int hoge = bundle.getInt("key"); // キーを指定してint型の値を受け取る
    }
}
Bサイド

AndroidManifest.xml

<manifest package="com.sample.B">
    <service android:name=".BsampleService"
    android:exported="true" />
</manifest>

Aに対してbroadcastする
BsampleService.java

int value = 0;
Intent intent = new Intent();
intent.putExtra("key", value);  // int型の値を入れる
sendBroadcast(intent);