android的廣播分爲動態註冊和靜態註冊兩種情況
首先先說下靜態註冊
靜態註冊就是在xml進行註冊 代碼如下:
java代碼部分:
package com.example.tt;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class simidaReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "接收到廣播信息了,然後我就被打印了", Toast.LENGTH_LONG).show();
}
}
xml代碼部分:
<receiver android:name="simidaReceive">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
當然還需要一個權限:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
這樣就完成了一個廣播的靜態註冊,在系統接收到短信時候會提示一個Toast信息。
效果如下:
動態註冊:
java代碼部分:
@Override
protected void onStart() {
//在onStart註冊廣播,和程序一起運行
receive = new simidaReceive();
IntentFilter filter = new IntentFilter(
"android.provider.Telephony.SMS_RECEIVED");
registerReceiver(receive, filter);
super.onStart();
}
@Override
protected void onStop() {
//在onStop取消廣播接收
unregisterReceiver(receive);
super.onStop();
}
靜態註冊將會駐留在系統中,隨着系統啓動而啓動,一直工作。如果沒有必要,我推薦使用動態註冊的方式來註冊廣播,這樣將會節省系統資源和電量。