AndroidのBroadcastReceiver - Normal Broadcast
Normal Broadcastは非同期であり、同時にすべての受信者が受信する。
サンプルコード
① MainActivity.javaのボタンでBroadcastを行う
package com.example.liguofeng.mynormalbroadcastreceiver; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // ボタンクリック ((Button) findViewById(R.id.broadcast)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction("com.example.liguofeng.action.SAMPLE_BROADCAST"); intent.putExtra("msg", "123456789"); // Broadcast sendBroadcast(intent); } }); } }
② MyReceiver.javaで受信し、結果を表示する
package com.example.liguofeng.mynormalbroadcastreceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "IntentAction : " + intent.getAction() + "\n" + "Message : " + intent.getStringExtra("msg"), Toast.LENGTH_LONG) .show(); } }
③ AndroiManifest.xmlに追加
<receiver android:name=".MyReceiver" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="com.example.liguofeng.action.SAMPLE_BROADCAST" /> </intent-filter> </receiver>