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型の値を受け取る } }