自定义广播、有序广播、无序广播、监听sd卡的状态
2015-11-07 18:10
561 查看
//发送广播 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 发送广播事件 (消息) * @param view */ public void click(View view){ Intent intent = new Intent(); //自定义一个广播动作。 intent.setAction("com.itheima.sender.jiuminga"); /*** * 把消息发出去了。 无序广播 * * 无序广播 :如果广播事件是无序发送出的所有的广播接收者 都会接受到这个事件 * 优点:无序广播,不可被拦截,不可终止。 * * 有序广播:如果广播有序的发送出去的 广播接收者会按照 优先级 接受到广播事件 * 优点:高优先级的广播接受者, 可以终止掉 广播事件 * 有序广播,可被拦截,可终止,可以修改数据。 * * 优先级高的会先接收的到,低先级的会后接收的到 * * * */ sendBroadcast(intent); //发送有序广播 //sendOrderedBroadcast(intent, receiverPermission); /** * * intent:定义广播的频道 * * receiverPermission:广播接收者的权限 * * resultReceiver:最终的广播接收者 * * scheduler :广播的策略 * * initialCode:请求码 * * initialData:发送的数据 * * initialExtras:附加的数据 * */ sendOrderedBroadcast(intent, receiverPermission, resultReceiver, scheduler, initialCode, initialData, initialExtras) } } //接收广播 1.定义接收的频道 2.类继承BroadcastReceiver 即可
/** * 发送无序广播 * @param view */ public void send1(View view){ Intent intent = new Intent(); intent.setAction("com.itheima.broadcasttest.songwennuan"); intent.putExtra("msg", "发1万块"); //无序广播,不可被拦截,不可终止。 sendBroadcast(intent); } /** * 发送有序广播 * @param view */ public void send2(View view){ Intent intent = new Intent(); intent.setAction("com.itheima.broadcasttest.songwennuan"); //有序广播,可被拦截,可终止,可以修改数据。 sendOrderedBroadcast(intent, null, new FinalReceiver(), null, 0, "给农民兄弟发10000块钱", null); }
public class Level3Receiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String message = getResultData(); System.out.println("乡级部门得到市的消息:"+message); setResultData("给农民兄弟发两大大米"); } } <receiver android:name="com.itheima.broadcasttest.Level3Receiver" > <intent-filter android:priority="100" > <action android:name="com.itheima.broadcasttest.songwennuan" /> </intent-filter> </receiver>
//监听sd卡的状态 public class SDStatusReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "sd卡别移除,微信头像或者图片暂时不可用", 1).show(); } } 权限: <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <receiver android:name="com.itheima.sdcardmointor.SDStatusReceiver"> <intent-filter> <action android:name="android.intent.action.MEDIA_UNMOUNTED"/> <action android:name="android.intent.action.MEDIA_REMOVED"/> <data android:scheme="file"></data> </intent-filter> </receiver>
相关文章推荐
- 使用moment.js管理时间
- 简单了解ddos攻击
- 通过innobackupex实现对MySQL的单库备份
- 如何编写dao_servlet容器处理请求资源路径_路径匹配
- 套接字的(客户端与服务器端的连接)
- 选项卡操作
- AutoMapper(七)
- Webstorm10.0.3破解程序及汉化包下载、Webstorm配置入门指南
- 猴子吃桃问题
- linux 线程栈
- This data item is already used in a primary identifier.的处理
- eclipse开发Groovy代码,与java集成,maven打包编译
- 【iOS】文件下载小记
- hibernate使用list映射,查询出来的list集合包含多个null记录
- 黑马程序员--集合(一)
- 黑马程序员——java基础---集合(下)
- Macbook下MySQL卸载方法
- pulltorefresh上拉加载,没有更多数据的时候显示“加载完成”,不回调刷新接口的实现
- 魅族手机MX4 MX4 Pro 魅蓝note 无法连接USB调试,adb连不上问题的解决
- 工作队列(workqueue) create_workqueue/schedule_work/queue_work