Android 傳送系統廣播與自定義廣播
阿新 • • 發佈:2019-01-22
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方法來發送廣播