當前位置:編程學習大全網 - 行動軟體 - android broadcastrceiver 可以發廣播嗎

android broadcastrceiver 可以發廣播嗎

可以。

1.廣播接收者(BroadcastReceiver)

廣播接收者(BroadcastReceiver)繼承BroadcastReceiver類接收廣播意圖的Java類,重寫:

public void onReceive(Context context,Intent intent),其中intent可以獲得傳遞的數據;

廣播意圖就是通過Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intentintent)發送的意圖,通過這個語句,能夠廣播給所有滿足條件的組件,比如intent設置了action="Receiver",則所有在AndroidManifest.xml中設置過<actionandroid:name="Receiver"/>的廣播接收者都能夠接收到廣播;

2.廣播發送者sendBroadcast()

通常廣播發送方就是調用Context.sendBroadcast()的程序,通常廣播發送方都是通過隱式意圖發送出去;

廣播發送方分為普通廣播和有序廣播;

同步廣播:發送方發出後,幾乎同時到達多個廣播接收者處,某個接收者不能接收到廣播後進行壹番處理後傳給下壹個接收者,並且無法終止廣播繼續傳播;Context.sendBroadcast(intent);

有序廣播:廣播接收者需要提前設置優先級,優先級高的先接收到廣播,優先級數值為-1000~1000,在AndroidManifest.xml的<intent-filterandroid:priority="1">設置;比如存在3個廣播接收者A、B、C、D,優先級A>B>C>D,因此A最先收到廣播,當A收到廣播後,可以向廣播中添加壹些數據給下壹個接收者(intent.putExtra()),或者終止廣播 abortBroadcast();Context.sendOrderedBroadcast(intent);

壹、同步廣播發送方核心代碼

Intent intent = new Intent();

intent.setAction("Receiver");

Context.sendBroadcast(intent);

有序廣播發送方核心代碼:

Intent intent = new Intent();

intent.setAction("Receiver");

Context.sendOrderedBroadcast(intent,null);

二、廣播接收者核心代碼:

public class MyReceiver extends BroadcastReceiver{

public void onReceive(Context context, Intent intent)

{

Bundle bundle = intent.getExtras();...

}

}

三 註冊該廣播

AndroidManifest.xml 註冊方式

<receiver android:name=".MyReceiver">

<intent-filter android:priority="1000">

<action android:name="Receiver"/>

</intent-filter>

</receiver>

Java類註冊方式

publicvoid registerBoradcastReceiver()

{

IntentFilter myIntentFilter = new IntentFilter();

myIntentFilter.addAction("Receiver");

registerReceiver(廣播類對象, myIntentFilter);

}

簡單例子

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.Toast;

public class Test extends Activity{

private final String ACTION_NAME = "Receiver";

private Button mBtnEvent = null;

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

//註冊廣播

registerBoradcastReceiver();

LinearLayout mLinearLayout = new LinearLayout(this);

mBtnEvent= new Button(this);

mBtnEvent.setText("發送廣播");

mLinearLayout.addView(mBtnMsgEvent);

setContentView(mLinearLayout);

mBtnEvent.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

sendTestBroadcast();

}

});

}

//發送廣播

private void sendTestBroadcast()

{

Intent mIntent = new Intent(ACTION_NAME);

mIntent.putExtra("strData", "發送廣播,在這裏傳送數據");

sendBroadcast(mIntent);

}

private BroadcastReceiver myReceiver = new BroadcastReceiver(){

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if(action.equals(ACTION_NAME)){

Toast.makeText(Test.this, "接收測試", 200);

}

}

};

//註冊廣播

public void registerBoradcastReceiver(){

IntentFilter myIntentFilter = new IntentFilter();

myIntentFilter.addAction(ACTION_NAME);

registerReceiver(myReceiver, myIntentFilter);

}

}

  • 上一篇:團購是怎麽火起來的,當初他們也沒做推廣,到底是怎麽火起來的,又為什麽時隔1年到現在才開始做電視廣告。
  • 下一篇:奇跡暖暖選出地點的名字
  • copyright 2024編程學習大全網