原:/forum.php?mod=viewthread&tid=540944&extra=page%3D1&page=1
不多说,上个简图,
首先创建一个广播接收消息,
这里面有判断是否锁屏,
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("com.aura.iotcontrol.activity")){ System.out.println("收到消息") ; KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); if (km.inKeyguardRestrictedInputMode()) {Intent alarmIntent = new Intent(context, AlarmHandlerActivity.class);alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);MessageActivity.this.startActivity(alarmIntent); } } }} ;
注册代码
private static final StringACTION= "com.aura.iotcontrol.activity";
IntentFilter filter = new IntentFilter();filter.addAction(ACTION);registerReceiver(broadcastReceiver, filter);
收到消息后发送广播
sendBroadcast(new Intent(ACTION));
当广播接收到消息后,跳转指定的activity,并解锁显示布局
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE); if (!pm.isScreenOn()) { PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright"); wl.acquire(); wl.release(); } DialogUtil.showWf(AlarmHandlerActivity.this , "收到消息!");}
最后别忘了加权限:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/><uses-permission android:name="android.permission.WAKE_LOCK"/>
菜鸟笔记,不喜勿喷。
-------------------------------------------
------------------08-11-----------------