1. 程式人生 > >Android 傳送系統廣播與自定義廣播

Android 傳送系統廣播與自定義廣播

android系統會發送許多系統級別的廣播,比如螢幕關閉,電池電量低等廣播。同樣應用可以發起自定義“由開發者定義的”廣播。
(1)傳送自定義的廣播
package com.hmkcode.android;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends Activity implements OnClickListener {

    MyReceiver myReceiver;
    IntentFilter intentFilter;
    EditText etReceivedBroadcast;
    Button btnSendBroadcast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        etReceivedBroadcast = (EditText) findViewById(R.id.etReceivedBroadcast);
        btnSendBroadcast = (Button) findViewById(R.id.btnSendBroadcast);
        //keep reference to Activity context
        MyApplication myApplication = (MyApplication) this.getApplicationContext();
        myApplication.mainActivity = this;
        btnSendBroadcast.setOnClickListener(this);
        myReceiver = new MyReceiver();
        intentFilter = new IntentFilter("com.hmkcode.android.USER_ACTION");
    }

    @Override
    protected void onResume() {
        super.onResume();
//第一種註冊方式(非常駐型廣播
當應用程式結束了,廣播自然就沒有了,比如你在activity中的onCreate或者onResume中註冊廣播接收器
   // 在onDestory中解除安裝廣播接收器。這樣你的廣播接收器就一個非常駐型的了。這種也叫動態註冊。)         registerReceiver(myReceiver, intentFilter);     }     @Override     protected void onPause() {         super.onPause();         unregisterReceiver(myReceiver);     }     @Override     public void onClick(View view) {         Intent intnet = new Intent("com.hmkcode.android.USER_ACTION");         sendBroadcast(intnet);     } }
第二種註冊方式
	AndroidManifast.xml進行註冊(常駐型廣播,當你的應用程式關閉了,如果有廣播資訊來,你寫的廣播接收器同樣的能接受到,
  他的註冊方式就是在你的應用程式中的AndroidManifast.xml進行註冊。通常說這種方式是靜態註冊
     <receiver android:name="com.hmkcode.android.MyReceiver" >
<intent-filter>
<action android:name="com.hmkcode.android.USER_ACTION" />
</intent-filter
>
</receiver>
(2)傳送系統廣播
         傳送系統廣播比如電池電量低的廣播Intent.ACTION_BATTERY_LOW;是不用呼叫sendBroadcast方法,系統會自己傳送
總結:系統廣播是系統自己監測傳送的,自定義廣播要手動呼叫sendBroadcast方法來發送廣播