注意:锁屏和解锁广播接受者不能再清单文件注册,必须使用代码注册
1.注册锁屏广播接受者
a.创建
/**
* 锁屏的广播接受者
* @author Administrator
*
*/
private class ScreenOffReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("锁屏了......");
}
}
b.注册
//注册锁屏的广播接受者
screenOffReceiver = new ScreenOffReceiver();
//设置过滤条件
IntentFilter screenoffIntentFilter = new IntentFilter();
screenoffIntentFilter.addAction(Intent.ACTION_SCREEN_OFF);
//注册广播接受者
registerReceiver(screenOffReceiver, screenoffIntentFilter);
c.注销
//注销锁屏广播接受者
if (screenOffReceiver != null) {
unregisterReceiver(screenOffReceiver);
screenOffReceiver = null;
}
d.执行操作,清理进程和停止更新
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("锁屏了......");
//清理进程的操作
killProcess();
//停止更新
stopUpdates();
}
2.解锁的广播接受者
a.创建
/**
* 解锁的广播接受者
* @author Administrator
*
*/
private class ScrennOnReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
}
}
b.注册
//注册解锁的广播接受者
scrennOnReceiver = new ScrennOnReceiver();
//设置过滤条件
IntentFilter scrennOnIntentFilter = new IntentFilter();
scrennOnIntentFilter.addAction(Intent.ACTION_SCREEN_ON);
//注册广播接受者
registerReceiver(scrennOnReceiver, scrennOnIntentFilter);
c.注销
//注销解锁广播接受者
if (scrennOnReceiver != null) {
unregisterReceiver(scrennOnReceiver);
scrennOnReceiver = null;
}
d.开启更新
@Override
public void onReceive(Context context, Intent intent) {
//开启更新
updateWidgets();
}
widgetBug处理
将开启服务的操作放到onUpdate方法中
//当更新时间到了,就会调用
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
System.out.println("onUpdate");
//开启服务
Intent intent = new Intent(context,WidgetsService.class);
context.startService(intent);
}