Androidアプリ入門 No.66 Intentのプロードキャスト 暗黙的なブロードキャスト
Intentのブロードキャスト
暗黙的なブロードキャスト
ブロードキャストの例を確認するため、以下のプロジェクトを作成する。
項目 | 内容 |
---|---|
Project name | BroadcastTest |
Build Target | Android 1.6 |
Application name | BroadcastTest |
Package name | sample.bt |
Create Activity | BroadcastTest |
Min SDK Version | 4 |
まず、ブロードキャストを送信するActivityのレイアウトのmain.xmlを作成する。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/broadcastButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="ブロードキャスト!" /> </LinearLayout>
次に、BroadcastTest.javaを以下のようにする。IntentにはputExtraにて文字列データのみをセットしている。そしてIntentの発行はsendBroadcastメソッドで行う。
package sample.bt; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class BroadcastTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button broadcastButton = (Button) findViewById(R.id.broadcastButton); broadcastButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent("net.kuwalab.broadcast.test"); intent.putExtra("broadcastTest", "ブロードキャスト!!"); sendBroadcast(intent); } }); } }
次に、ブロードキャストを受け取るレシーバーを作成する。レシーバーはBroadcastReceiverクラスを継承して作成する。また、実際にブロードキャストを受け取るメソッドはonReceiveメソッドとなる。TestReceiver.javaを以下のようにする。
package sample.bt; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class TestReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String testString = intent.getExtras().getString("broadcastTest"); Toast.makeText(context, testString, Toast.LENGTH_SHORT).show(); } }
また、ブロードキャストを受け取るレシーバーを使用するためにAndroidManifest.xmlを以下のようにする。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="sample.bt" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".BroadcastTest" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="TestReceiver"> <intent-filter> <action android:name="net.kuwalab.broadcast.test" /> </intent-filter> </receiver> </application> <uses-sdk android:minSdkVersion="4" /> </manifest>