読者です 読者をやめる 読者になる 読者になる

コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

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>

実行結果は以下。ボタンを押すと、Toastによりメッセージが表示されることが確認できる。

広告