广播 BroadcastReceiver
2016-04-26 12:11
281 查看
1.简单的广播
静态注册AndroidManifest.xml
2.动态注释和注销
AndroidManifest.xml删除静态注册的代码
MainActivity
3.发送和接收有序消息
AndroidManifest.xml
才能终止广播而不报错
MyReceiver1,MyReceiver2是一样的
4.为消息设置权限
AndroidManifest.xml
静态注册AndroidManifest.xml
<receiver android:name=".MyReceiver1" android:enabled="true" android:exported="true"> </receiver>MainActivity
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity implements View.OnClickListener{ private EditText ed; private Button sendbtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed= (EditText) this.findViewById(R.id.ed); sendbtn= (Button) this.findViewById(R.id.btnsend); sendbtn.setOnClickListener(this); } @Override public void onClick(View v) { String msg=ed.getText().toString(); Intent it=new Intent(MainActivity.this,MyReceiver1.class); it.putExtra("msg",msg); this.sendBroadcast(it); } }MyReceiver1
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MyReceiver1 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String msg=intent.getStringExtra("msg"); Toast.makeText(context,msg,Toast.LENGTH_LONG).show(); } }
2.动态注释和注销
AndroidManifest.xml删除静态注册的代码
MainActivity
import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity implements View.OnClickListener{ private EditText ed; private Button sendbtn,zc,zx; private MyReceiver1 receiver1=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed= (EditText) this.findViewById(R.id.ed); sendbtn= (Button) this.findViewById(R.id.btnsend); sendbtn.setOnClickListener(this); zc= (Button) this.findViewById(R.id.btnzc); zc.setOnClickListener(this); zx= (Button) this.findViewById(R.id.btnzx); zx.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btnsend: String msg=ed.getText().toString(); Intent it=new Intent(MyReceiver1.ACTION); it.putExtra("msg", msg); this.sendBroadcast(it); break; case R.id.btnzc: if(receiver1==null){ receiver1=new MyReceiver1(); IntentFilter filter=new IntentFilter(MyReceiver1.ACTION); //注册 registerReceiver(receiver1,filter); } break; case R.id.btnzx: if(receiver1!=null){ //注销之后,重新赋值为空 unregisterReceiver(receiver1); receiver1=null; } break; } } }MyReceiver1
public class MyReceiver1 extends BroadcastReceiver { //intent中已经说明了,这是约定俗成的。 public static final String ACTION="com.rj141.sb.broadcastreceiverdemo.intent.action.MyReceiver1"; @Override public void onReceive(Context context, Intent intent) { String msg=intent.getStringExtra("msg"); Toast.makeText(context,msg,Toast.LENGTH_LONG).show(); } }
3.发送和接收有序消息
AndroidManifest.xml
<receiver android:name=".MyReceiver1" android:enabled="true" android:exported="true"> <intent-filter android:priority="1000"> <action android:name="com.rj141.sb.broadcastreceiverdemo.hello"></action> </intent-filter> </receiver> <receiver android:name=".MyReceiver2" android:enabled="true" android:exported="true"> <intent-filter android:priority="1000"> <action android:name="com.rj141.sb.broadcastreceiverdemo.hello"></action> </intent-filter> </receiver>MainActivity
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity implements View.OnClickListener{ private EditText ed; private Button sendbtn; private MyReceiver1 receiver1=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed= (EditText) this.findViewById(R.id.ed); sendbtn= (Button) this.findViewById(R.id.btnsend); sendbtn.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btnsend: String msg=ed.getText().toString(); Intent it=new Intent("com.rj141.sb.broadcastreceiverdemo.hello"); it.putExtra("msg", msg); this.sendOrderedBroadcast(it,null); break; } } }注意
this.sendOrderedBroadcast(it,null);<span style="color:#cc7832;"> </span><pre name="code" class="java"><span style="color:#000000;">abortBroadcast();//终止广播</span>
才能终止广播而不报错
MyReceiver1,MyReceiver2是一样的
public class MyReceiver1 extends BroadcastReceiver { //intent中已经说明了,这是约定俗成的。 public static final String ACTION="com.rj141.sb.broadcastreceiverdemo.intent.action.MyReceiver1"; @Override public void onReceive(Context context, Intent intent) { String msg=intent.getStringExtra("msg"); Log.i("1",msg); } }
4.为消息设置权限
AndroidManifest.xml
<permission android:protectionLevel="normal" android:name="com.rj141.sb.broadcastreceiverdemo.MY_Permission"/>//设置权限 <uses-permission android:name="com.rj141.sb.broadcastreceiverdemo.MY_Permission"/>//申请权限
相关文章推荐
- Android之This element neither has attached source nor attached Javadoc and hence no Javadoc could be
- 详解Bootstrap表单组件
- HTML--绝对路径, 表格,表单, 框架
- 跨平台AR增强现实开发(二)(Vuforia目录结构)
- C#事件(event)的一个实例
- Windows下80端口被pid为4的System进程占用解决方法
- android学习 4-25使用Path 绘制几何图形
- C#操作Xml文件:增,删,改,查
- 在 iOS创建 第一个Cordova 项目
- Flink DataStream API Programming Guide
- 《oracle每天一练》触发器不能调用或间接调用COMMIT,ROLLBACK等DCL语句
- mavenWeb工程建立步骤
- CNDS账号密码
- View结合组策略进行应用程序下发
- epoll详解
- Materials Design修改TextInputLayout的label字体颜色和下划线的状态颜色
- 解决Execution failed for task ':app:clean'. > Unable to delete directory问题
- git clone简介
- OpenCv学习笔记(七)---OpenCv中的基本绘图函数,圆,椭圆,线段,矩形,多边形的绘制(2)--提高篇
- paoding-rose 框架BaseDAO