Android 唤醒手机亮屏并前台显示

2019-03-15  本文已影响0人  Asbefore如初_3142

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

上一篇 下一篇

猜你喜欢

热点阅读