有序广播
未设定优先级状态下的,广播接受顺序
有序广播,设定优先级
优先级,意思是,哪个被设置的优先级越高,它就先获得广播(优先级的范围为 -1000~1000),
静态接受,设置方法为(在配置xml中的,广播过滤器节点内,加入值):
<receiver android:name=".ReceiveOne">
<intent-filter android:priority="1000">
<action android:name="transmitter"></action>
</intent-filter>
</receiver>
动态接受,在Activity,重写的onResume() 方法内设置:
@Override
protected void onResume() {
super.onResume();
//设置优先级
setProgress(999);
registerReceiver(receiveTwo,intd);
}
发送者
package com.example.senbroadcast;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.et_main_one);
}
//点击事件
public void click(View view){
//建立意图
Intent intent=new Intent();
//设定发送频率
intent.setAction("transmitter");
//设置发送内容
intent.putExtra("key",editText.getText().toString());
//发送广播
sendOrderedBroadcast(intent);
}
}
广播接受者
修改广播、终止广播
修改,比如说,需要屏蔽某些特殊的字符。 终止广播,当广播内容为一些违法违规,需要禁止的时,就可以通过终止广播,来放置扩散。
注意事项:
接受者,修改或者终止代码示例
package com.example.receiveone;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
/**
* Created by Administrator on 2017/7/14.
*/
public class ReceiveOne extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//接受广播
if("transmitter".equals(intent.getAction())){
//屏蔽敏感词汇
if(intent.getStringExtra("key").contains("草")){
//终止,有序广播传播
abortBroadcast();
}
if(intent.getStringExtra("key").contains("妹的")){
//修改广播内容,用来屏蔽
Bundle bundle=new Bundle();
bundle.putString("键", intent.getStringExtra("key").replace("妹的","***"));
setResultExtras(bundle);
Toast.makeText(context, "1 号 动态接受"+intent.getStringExtra("key"), Toast.LENGTH_SHORT).show();
}
}
}
}