天天看點

android 動态注冊 廣播

在動态注冊中,不需要再AndroidManifest.xml中配置receiver了。

在onResume函數中,通過registerReceiver()注冊,在onPause()中,通過unregisterReceiver()來取消注冊。

package com.dxz.broadcasttest.dynamic;

import android.app.Activity;

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;

public class BroadcastTest extends Activity {

 public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";

 protected  MyBroadcastReceiver receiver;

 @Override

 protected void onCreate(Bundle savedInstanceState) {

  // TODO Auto-generated method stub

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main2);

  Button btn0 = (Button) findViewById(R.id.btn0);

  btn0.setOnClickListener(new OnClickListener() {

   public void onClick(View v) {

    Intent it = new Intent(NEW_LIFEFORM_DETECTED);

    sendBroadcast(it);

   }

  });

 }

 protected void onResume() {

  super.onResume();

  System.out.println("in dynamic onResume register");

  IntentFilter counterActionFilter = new IntentFilter(

    NEW_LIFEFORM_DETECTED);

  receiver = new MyBroadcastReceiver();

  registerReceiver(receiver, counterActionFilter);

 protected void onPause() {

  super.onPause();

  System.out.println("in dynamic onPause unregister");

  unregisterReceiver(receiver);

}

receiver代碼:

import android.content.BroadcastReceiver;

import android.content.Context;

import android.util.Log;

import android.widget.Toast;

public class MyBroadcastReceiver extends BroadcastReceiver {

 public MyBroadcastReceiver () {        

  Log.v("BROADCAST_TAG", "myBroadCast");  

 } 

 public void onReceive(Context context, Intent intent) {

  System.out.println("dynamic");

  Toast.makeText(context, "成功接收廣播dynamic:", Toast.LENGTH_LONG).show();

AndroidManifest.xml檔案:(沒有receiver節點了)

<?xml version="1.0" encoding="utf-8"?>

      package="com.dxz.broadcasttest.dynamic"

      android:versionCode="1"

      android:versionName="1.0">

    <uses-sdk android:minSdkVersion="4" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".BroadcastTest"

                  android:label="@string/app_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

</manifest>

繼續閱讀