醒来睡觉锁定的android没有工作

时间:2015-03-11 12:10:19

标签: android android-layout android-activity android-permissions

我使用ALARM_SERVICEBroadcastReceiver以下OnReceiveActivity来启动我的public class AlarmReciever extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { try { Intent i = new Intent(); i.setClassName("com.test", "co.test.OnReceiveActivity"); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK ); i.addFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON + WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON ); context.startActivity(i); } catch (Exception e) { e.printStackTrace(); } } }

WindowManager.LayoutParams

当我尝试没有任何指定的onReceive()标志时(当设备处于唤醒和解锁状态时) - 一切都按预期工作,意味着OnReceiveActivity被调用,并成功启动<uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 。但是,当标志存在时,它既不起作用,也不起作用,当设备处于睡眠状态并且看不到时,也不会在其唤醒和解锁时。

在清单文件中指定了以下权限:

{{1}}

2 个答案:

答案 0 :(得分:3)

这些不是Intent标记,不能与addFlags()上的Intent一起使用。

答案 1 :(得分:0)

正如@CommonsWare所评论的那样,WindowManager.LayoutParams标志不是Intent标志。

正确的方法是在onCreate() OnReceiveActivity范围内,使用getWindow()函数如下:

    getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED +
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD +
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON +
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
    );

我以前做过的方式被用在了很多我见过的例子中,这很奇怪。