97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見教育科技集團(tuán) >> 新聞動態(tài) >> Android資料 >> Android開發(fā)之使用Intent發(fā)送廣播消息  
 
Android開發(fā)之使用Intent發(fā)送廣播消息
分享到:

應(yīng)用程序和Android系統(tǒng)都可以使用Intent發(fā)送廣播消息。其中,廣播消息的內(nèi)容可以是與應(yīng)用程序密切相關(guān)的數(shù)據(jù)信息,也可以是Android的系統(tǒng)信息,例如,網(wǎng)絡(luò)連接變化、電池電量變化、接收短信和系統(tǒng)設(shè)置變化等。如果應(yīng)用程序注冊了BroadcastReceiver,則可以接收到指定的廣播消息。

下面將介紹廣播信息的使用方法。

首先,創(chuàng)建一個Intent。調(diào)用sendBroadcast()函數(shù),就可把Intent攜帶的消息廣播出去,如果要在Intent傳遞額外數(shù)據(jù),可以用Intent的putExtra()方法。

注意:在構(gòu)造Intent時必須用全局唯一的字符串標(biāo)識其要執(zhí)行的動作,通常使用應(yīng)用程序包的名稱。

利用Intent發(fā)送廣播消息,并添加了額外的數(shù)據(jù),然后調(diào)用sendBroadcast()發(fā)送廣播消息的代碼如代碼清單6-22所示。

代碼清單6-22 利用Intent發(fā)送廣播消息


String UNIQUE_STRING = "com.example.BroadcastReceiverDemo";
    Intent intent = new Intent(UNIQUE_STRING);
    intent.putExtra("key1", "value1");
    intent.putExtra("key2", "value2");
    sendBroadcast(intent);

廣播消息發(fā)送后,利用BroadcastReceiver監(jiān)聽廣播消息。具體方法如下:在AndroidManifest.xml文件或在代碼中注冊一個BroadcastReceiver,并在其中使用Intent 過濾器指定要處理的廣播消息。在BroadcastReceiver接收到與之匹配的廣播消息后,onReceive()方法會被調(diào)用;onReceive()方法必須要在5秒內(nèi)執(zhí)行完畢,否則Android系統(tǒng)會認(rèn)為該組件失去響應(yīng),并提示用戶強(qiáng)行關(guān)閉該組件。

創(chuàng)建BroadcastReceiver需繼承BroadcastReceiver類,并重載onReceive()方法。代碼如代碼清單6-23所示。

代碼清單6-23 利用BroadcastReceiver監(jiān)聽廣播消息


public class MyBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            //TODO: React to the Intent received.
        }
    }

BroadcastReceiver的應(yīng)用程序不需要一直運(yùn)行,當(dāng)Android系統(tǒng)接收到與之匹配的廣播消息時,會自動啟動此BroadcastReceiver。基于以上特征,BroadcastReceiver適合做一些資源管理的工作。

如圖6-6所示,BroadcastReceiverDemo示例說明了如何在應(yīng)用程序中注冊BroadcastReceiver,并接收指定類型的廣播消息。


圖6-6 BroadcastReceiverDemo示例

如圖6-6所示,在單擊“發(fā)送廣播消息”按鈕后,EditText控件中內(nèi)容將以廣播消息的形式發(fā)送出去,示例內(nèi)部的BroadcastReceiver將接收這個廣播消息,并顯示在用戶界面的下方。

BroadcastReceiverDemo.java文件中包含發(fā)送廣播消息的代碼,其關(guān)鍵代碼如代碼清單6-24所示。

代碼清單6-24 BroadcastReceiverDemo.java


button.setOnClickListener(new OnClickListener(){
        public void onClick(View view){
            Intent intent = new Intent("com.example.BroadcastReceiverDemo");
            intent.putExtra("message", entryText.getText().toString());
            sendBroadcast(intent);
        }
    });

在上述代碼中,第3行代碼創(chuàng)建Intent,將com.example.BroadcastReceiverDem作為識別廣播消息的字符串標(biāo)識;第4行代碼添加了額外信息;第5行代碼調(diào)用sendBroadcast()函數(shù)發(fā)送廣播消息。

為了能夠使應(yīng)用程序中的BroadcastReceiver接收指定的廣播消息,首先要在AndroidManifest.xml文件中添加Intent過濾器,聲明BroadcastReceiver可以接收的廣播消息。其中,AndroidManifest.xml文件的完整代碼如代碼清單6-25所示。

代碼清單6-25 AndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.BroadcastReceiverDemo"
        android:versionCode="1"
        android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".BroadcastReceiverDemo"
                      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=".MyBroadcastReceiver">
                <intent-filter>
                    <action android:name="com.example.BroadcastReceiverDemo" />
                </intent-filter>
            </receiver>
        </application>
        <uses-sdk android:minSdkVersion="3" />
    </manifest>

在上述代碼中,第14行代碼中創(chuàng)建了一個<receiver>節(jié)點(diǎn);在第15行中聲明了Intent過濾器的動作為“com.example.BroadcastReceiverDemo”,這與BroadcastReceiverDemo.java文件中Intent的動作相一致,表明這個BroadcastReceiver可以接收動作為“com.example. BroadcastReceiverDemo”的廣播消息。

MyBroadcastReceiver.java文件創(chuàng)建了一個自定義的BroadcastReceiver,其核心代碼如代碼清單6-26所示。

代碼清單6-26 MyBroadcastReceiver.java


public class MyBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            String msg = intent.getStringExtra("message");
            Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
        }
    }

在上述代碼中,第1行代碼首先繼承了BroadcastReceiver類;第3行代碼重載了onReceive()函數(shù),當(dāng)接收到AndroidManifest.xml文件定義的廣播消息后,程序?qū)⒆詣诱{(diào)用onReceive()函數(shù)。

 更多相關(guān)文章

·Android開發(fā)之使用Intent隱式啟動Activity
·Android開發(fā)之Intent解析
·如何使用Intent顯式啟動Activity?
·Android開發(fā)中Intent屬性詳解
·Android開發(fā)之獲取Activity返回值