您的位置:首页 > 其它

自定义广播、有序广播、无序广播、监听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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: