1、开机启动服务
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class BootCompleteReceiver extends BroadcastReceiver {
private static final String TAG = "BootCompleteReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, PushService.class);
context.startService(service);
Log.i(TAG, "Boot Complete. Starting PushService...");
}
}
在xml文件中的注释说明为:
<!-- 开机广播接受者 -->
<receiver android:name=".BootCompleteReceiver">
<intent-filter>
<!-- 注册开机广播地址-->
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
2、网络状态变化
直接来一段JAVA的代码如下:
private static final String TAG = "NetworkStateReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "network state changed.");
if (!isNetworkAvailable(context)) {
Toast.makeText(context, "network disconnected!", 0).show();
}
}
<receiver android:name=".NetworkStateReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
3、电量变化
public class BatteryChangedReceiver extends BroadcastReceiver {
private static final String TAG = "BatteryChangedReceiver";
@Override
public void onReceive(Context context, Intent intent) {
int currLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); //当前电量
int total = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 1); //总电量
int percent = currLevel * 100 / total;
Log.i(TAG, "battery: " + percent + "%");
}
}
<receiver android:name=".BatteryChangedReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_CHANGED"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
4、短信拦截
<span style="white-space:pre"> </span>@Override
public void onReceive(Context context, Intent intent) {
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
for (Object obj : pdus) {
byte[] pdu = (byte[]) obj;// 将对象转换为字节数组
SmsMessage message = SmsMessage.createFromPdu(pdu);// 使用pdu格式的数据生成短信对象
String content = message.getMessageBody();
Date date = new Date(message.getTimestampMillis());// 获取发送时间
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
String receiveTime = format.format(date);// 获取指定格式发送日期
String senderNumber = message.getOriginatingAddress();// 发送者的号码
Logger.ii(receiveTime, senderNumber);
if (phone.equals(senderNumber)) {
abortBroadcast();
}
}
}
<span style="white-space:pre"> </span><!-- 短信拦截器 -->
<receiver android:name="com.paying.player.sms.SMSBroadcastReceiver" >
<!-- 意图过滤器 -->
<intent-filter android:priority="1000" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
5、闹钟动态注册
Intent intent = new Intent("MYALARMRECEIVER");
mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
mPendingIntent = PendingIntent.getService(this, 0, intent,
Intent.FLAG_ACTIVITY_NEW_TASK);
long now = System.currentTimeMillis();
// 一分钟后重启一次
mAlarmManager.setInexactRepeating(AlarmManager.RTC, now, 60000,mPendingIntent);
<!-- 闹钟提醒 -->
<receiver android:name="com.common.offerads.service.DateChangeService" >
<intent-filter>
<action android:name="MYALARMRECEIVER" />
</intent-filter>
</receiver>
6、文件下载
@SuppressLint("NewApi")
public void onReceive(Context context, Intent intent) {
this.mContext = context;
myDwonloadID = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID,
-1);
// 通过共享文件,找到下载后存放的地址
sPreferences = context.getSharedPreferences("downloadcomplete", 0);
long refernece = sPreferences.getLong(myDwonloadID + "refernece", 0);
// 如果当前下载的地址就是我存放的地址
if (refernece == myDwonloadID) {
// 获取图片,然后显示通知栏
new GetIconThread().start();
}
}
<receiver android:name="com.common.offerads.receiver.UpdataBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />
</intent-filter>
</receiver>