Android 唤醒手机亮屏并前台显示
目前网络上许多唤醒手机亮屏的方式在高版本上都失效了
下面是自己实现的方式
假设已经实现了一个广播接收器
一:Android 唤醒锁唤醒CPU
当广播接收器收到消息的时候,持有唤醒锁。这时候并不会点亮屏幕。
PowerManager pm = (PowerManager)
context.getSystemService(Context.POWER_SERVICE);
if (pm == null)
return;PowerManager.WakeLock
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP,
"messagelisenter:bright");
wl.acquire(1000);
wl.release();
二:启动一个Activity
在广播接收器中,跳转到某一个 activity 中,这里假设是 LockShowActivity
Intent intent = new Intent(this, LockShowActivity.class);
startActivity(intent);
三:Activity 设置Flags
在 Activity 的 onCreate
中,添加 Flags
public class LockShowActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
setContentView(R.layout.activity_lock_show);
Log.v("testapp", "activity:" +
getIntent().getIntExtra(Constant.GET_MESSAGE_LENGTH, -1));
}}
这样,只要广播接收器收到一个消息,手机就会亮屏并显示这个 Activity
注意
在手机上要手动设置权限:允许锁屏显示
这个权限要手动设置,不能动态申请。而微信、qq等不需要手动设置,是因为手机厂商默认给了权限
PS:测试手机是小米8