Android-BroadcastReceiver註冊方式

見名知義,“廣播”就是爲了來獲取的,比方說系統安裝或者卸載了一個應用,都會發出一個廣播,如果需要這個“廣播”,自己定義一個自定義的BroadCastReceiver,在裏面判斷接收到的“廣播”是什麼,然後做出相應的動作。


如果想要使用這個“廣播”,有兩種方式:
1、在“清單文件中註冊廣播”,一般不這樣做,因爲這個優先級沒有在代碼中的高,並且,如果程序退出以後,這個廣播還是存在的,也就是直到關機爲止,示例代碼如下:
public class BootReceiver extends BroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//接收安裝廣播 
        if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {   
            String packageName = intent.getDataString(); 
            Toast.makeText(context, "安裝了:"+packageName, 0).show();
        }   
        //接收卸載廣播  
        if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {   
        // 給activity發送信息
        String packageName = intent.getDataString();
        Toast.makeText(context, "卸載了:"+packageName, 0).show();
        }
}


}


2、在MainActivity中註冊,一般規則是在onStart()方法中註冊廣播,在onDestory()方法中註銷廣播,具體代碼如下:
// start時註冊監聽
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
receiver = new BootReceiver();
IntentFilter filter = new IntentFilter();  
   filter.addAction("android.intent.action.PACKAGE_ADDED");  
   filter.addAction("android.intent.action.PACKAGE_REMOVED");  
   filter.addDataScheme("package");  
   this.registerReceiver(receiver, filter); 
}

// destory時註銷監聽
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
if(receiver != null){
this.unregisterReceiver(receiver);
}
super.onDestroy();
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章