Android 唤醒一个睡眠被锁定的机器人不工作

Android 唤醒一个睡眠被锁定的机器人不工作,android,android-layout,android-activity,android-permissions,Android,Android Layout,Android Activity,Android Permissions,我通过以下广播接收器使用报警服务,或启动我的接收活动: public class AlarmReciever extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { try { Intent i = new Intent(); i.setClassName("com.test",

我通过以下
广播接收器使用
报警服务
,或启动我的
接收活动

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" />


那些不是
Intent
标志,不能与
Intent
上的
addFlags()
一起使用
那些不是
Intent
标志,不能与
Intent
上的
addFlags()一起使用
那些不是
Intent
标志,不能与
addFlags()一起使用
Intent
上的
这些不是
Intent
标志,不能与
addFlags()
上的
Intent
一起使用,正如@commonware评论的那样,
WindowManager。LayoutParams
标志不是意图标志

正确的方法是在
OnReceiveActivity
onCreate()
中使用
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
    );

我以前的做法在我所看到的许多示例中都使用过,这使它非常奇怪。

正如@commonware评论的那样,
WindowManager.LayoutParams
标志不是意图标志

正确的方法是在
OnReceiveActivity
onCreate()
中使用
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
    );

我以前的做法在我所看到的许多示例中都使用过,这使它非常奇怪。

正如@commonware评论的那样,
WindowManager.LayoutParams
标志不是意图标志

正确的方法是在
OnReceiveActivity
onCreate()
中使用
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
    );

我以前的做法在我所看到的许多示例中都使用过,这使它非常奇怪。

正如@commonware评论的那样,
WindowManager.LayoutParams
标志不是意图标志

正确的方法是在
OnReceiveActivity
onCreate()
中使用
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
    );

我以前的做法在我见过的许多例子中都有使用,这让我觉得很奇怪。

这似乎对盖伊有用。。在任何情况下,我如何添加它们@commonsware@nobatlinux:在正在启动的活动中,将这些标志传递给
getWindow()。addFlags()
。是的,刚刚收到:)为未来的搜索者添加了一个答案。这似乎对guy有效。。在任何情况下,我如何添加它们@commonsware@nobatlinux:在正在启动的活动中,将这些标志传递给
getWindow()。addFlags()
。是的,刚刚收到:)为未来的搜索者添加了一个答案。这似乎对guy有效。。在任何情况下,我如何添加它们@commonsware@nobatlinux:在正在启动的活动中,将这些标志传递给
getWindow()。addFlags()
。是的,刚刚收到:)为未来的搜索者添加了一个答案。这似乎对guy有效。。在任何情况下,我如何添加它们@commonsware@nobatlinux:在正在启动的活动中,将这些标志传递给
getWindow().addFlags()
.yep刚刚得到:)为未来的搜索者添加了一个答案。@notbatlinux,而不是写新的答案。你应该尝试编辑从中获得解决方案提示的答案并接受该答案。@notbatlinux,而不是写新的答案,你应该尝试编辑从中获得解决方案提示并接受该答案。@notbatlinux,而不是写新的答案答案。@notbatlinux,而不是写新答案。您应该尝试编辑从中获得解决方案提示的答案并接受该答案。@notbatlinux,而不是写新答案,您应该尝试编辑从中获得解决方案提示的答案并接受该答案。