您的位置:首页 > 其它

广播和自定义广播事件

2016-04-15 16:45 483 查看
1,注册自定义的广播事件,这儿的“com.sdingba.bro.aa.bb”为自定义名字,并且registerReceiver注册广播事件

registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {

}
},new IntentFilter("com.sdingba.bri.aa.bb"));


2。开启广播事件。

Intent intent = new Intent();
intent.setAction("com.itheima.mobilesafe.tempstop");
intent.putExtra("packname", packname);
sendBroadcast(intent);


自定义锁屏的广播事件,

private class ScreenOffReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
tempStopProtectPackname = null;
}
}
offreceiver = new ScreenOffReceiver();
registerReceiver(offreceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));


不能做耗时操作,

1,生命周期只有10s左右】

2,不能耗时

3,荧光棒通过Intent发送给Service,由service完成

4,不能使用子线程

广播的种类:

普通广播::

Intent iun = new Intent();

iun.pitExtra("msg","这是一条官博");

iun.setAction("BC_One");

snedBroadcast(intent);


calss BC! extnds BroadcastReceiver{

    onReceive(...){

            String s  = intent.getString("msg");

            sout(""+s);

    }

}





在xml文件中

    <receiver android:name="com.sdingba.xxx.xx">

            <intent-filter    android:priority="1000">

                <action android:name="BC_One">

            </intent-filter>

    </receiver>


手动:

1,创建类

2,——>

IntentFilter intentfilter = new IntentFilter("BC_two");

BC2 bc2 = new BC2();

registerReceiver(bc2,intentfilter);


有序广播:

广播与广播之间传递数据只能在有序广播之间。

发送广播:

Bundle bundle = new Bundle();

bunldle.putString("text","xxxxx");

setResultExtras(bundle);

可以直接:

setResultExtras(“xxxx”);

然后接受:

String msage = getReaultData();

接受广播:

在onReceive()里面

Bundle bundle = getResultExtras(true);

string aa = bundle.getString("text");

sout(aa);


sendOrderedBroadcast(intent,null);//这是有序广播


//把这个广播终止掉,在有序广播有效果,普通没有
abortBroadcast();


开机启动广播:

public class BootCompleteReceiver extends BroadcastReceiver {

private SharedPreferences sp;
private TelephonyManager tm;
@Override
public void onReceive(Context context, Intent intent) {

sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);

boolean protecting = sp.getBoolean("protecting", false);
if(protecting){
//开启防盗保护才执行这个地方
tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

// 读取之前保存的SiM信息;
String saveSim = sp.getString("sim", "")+"afu";

//读取当前的sim卡信息
String realSim = tm.getSimSerialNumber();

//比较是否一样
if(saveSim.equals(realSim)){
//sim没有变更,还是同一个哥们
}else{
// sim 已经变更 发一个短信给安全号码
System.out.println("sim 已经变更");
Toast.makeText(context, "sim 已经变更", 1).show();
SmsManager.getDefault().sendTextMessage(sp.getString("safenumber", ""), null, "sim changing....", null, null);
}

}

}

}


<receiver android:name="com.itheima.mobilesafe.receiver.BootCompleteReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>


        短信广播:


public class SMSReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
}

}


<receiver android:name="com.itheima.mobilesafe.receiver.SMSReceiver" >
<intent-filter android:priority="1000" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: