
我尝试使用SCREEN_OFF& SCREEN_ON在广播接收器中的动作但它不起作用.
public voID onReceive(Context context,Intent intent) { Log.d("XYZ","Screen ON/OFF"); Toast.makeText(context,"screen",10000).show(); if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {.......}} 在活动中,我已注册广播,如 –
屏幕是我的广播接收器的对象
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); mContext.registerReceiver(screen,filter);解决方法 在MainActivity.class中调用UpdateService.class.
startService(new Intent(MainActivity.this,UpdateService.class));
UpdateService.class
public class UpdateService extends Service { broadcastReceiver mReceiver; public static int countOn = 0; public static int countOff = 0; @OverrIDe public voID onCreate() { super.onCreate(); // register receiver that handles screen on and screen off logic Log.i("UpdateService","Started"); IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); filter.addAction(Intent.ACTION_ANSWER); mReceiver = new MyReceiver(); registerReceiver(mReceiver,filter); } @OverrIDe public voID onDestroy() { unregisterReceiver(mReceiver); Log.i("onDestroy RecIEver","Called"); super.onDestroy(); } @OverrIDe public int onStartCommand(Intent intent,int flags,int startID) { // Todo auto-generated method stub boolean screenOn = intent.getBooleanExtra("screen_state",false); if (!screenOn) { Log.i("screenON","Called"); Log.i("viaService","CountOn =" + countOn); Toast.makeText(getApplicationContext(),"Awake",Toast.LENGTH_LONG) .show(); } else { Log.i("screenOFF","CountOff =" + countOff); } return START_STICKY; } @OverrIDe public IBinder onBind(Intent intent) { // Todo auto-generated method stub return null; }} 接收器类
public class MyReceiver extends broadcastReceiver { private boolean screenOff; @OverrIDe public voID onReceive(Context context,Intent intent) { if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { screenOff = true; // Log.i("via Receiver","normal ScreenOFF" ); } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { screenOff = false; } else if(intent.getAction().equals(Intent.ACTION_ANSWER)) { } Intent i = new Intent(context,UpdateService.class); i.putExtra("screen_state",screenOff); context.startService(i); }} 总结 以上是内存溢出为你收集整理的如何获取android中的屏幕锁定广播全部内容,希望文章能够帮你解决如何获取android中的屏幕锁定广播所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)