package b.r; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; public class mainAcitivty extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); IntentFilter filter = new IntentFilter(); filter.addAction("b.r.br"); br b = new br(); registerReceiver(b, filter);// 动态注册(如果动态注册是使用activity那activity调用finish()后该广播接收器失效,如使用application则一直存在。) Intent in = new Intent("b.r.br"); // 发送广播 // sendBroadcast(in); // 发送广播 他的最后一intent会被保留 如果是动态注册的注册前 发送的也能接受到 // 使用此方法需要 <uses-permission // android:name="android.permission.BROADCAST_STICKY">权限 //发送广播 sendBroadcast(in); //取消广播 动态注册的无法取消会报错 unregisterReceiver(b); } }
package b.r; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; /** * @version 2012-7-20 上午11:25:51 **/ public class br extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 使用不同的Action来区分广播 if(intent.getAction().equals("b.r.br")) { Toast.makeText(context, "接受广播", Toast.LENGTH_SHORT).show(); } } }
<!-- 静态注册 常驻型 --> <receiver android:name=".br"> <intent-filter> <action android:name="b.r.br" /> </intent-filter> </receiver>注意:如果在Activity之类的类里面写BroadcastReceiver,该类必须是static的
版权声明:本文为博主原创文章,未经博主允许不得转载。