Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 收到操作屏幕打开后,活动将不会启动_Android - Fatal编程技术网

Android 收到操作屏幕打开后,活动将不会启动

Android 收到操作屏幕打开后,活动将不会启动,android,Android,我正在创建一个锁替换应用程序,它显然需要有一个活动来启动调用的操作屏幕。以下是我的代码中与之相关的部分: public class StartupBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent startupIntent = new Intent(context, Lockdown.class); /

我正在创建一个锁替换应用程序,它显然需要有一个活动来启动调用的操作屏幕。以下是我的代码中与之相关的部分:

public class StartupBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Intent startupIntent = new Intent(context, Lockdown.class); // substitute with your launcher class
    startupIntent.addCategory(Intent.CATEGORY_HOME);
    startupIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(startupIntent);
}
}

由于无法从清单中调用ACTION_SCREEN_ON,因此我在主活动中动态注册了它

这在我的主类的onCreate函数中(锁定)


非常感谢您的帮助。

我找到了这个问题的答案:


android:launchMode=“singleInstance”
添加到主要活动的清单中。您还必须将此标志添加到接收器
startupIntent.setFlags(Intent.flag\u ACTIVITY\u MULTIPLE\u TASK)

但只有当用户手动启动您的活动时,才会注册您的IntentFilter,并且当您的活动暂停时,它将被取消注册——logcat很可能会警告您泄漏了一个接收器实例。或者我不太明白在哪种情况下会触发SCREEN_.:)无论如何,您也可以尝试将默认类别添加到过滤器中。您还可以检查logcat以查看是否缺少权限。我的接收器确实工作,我添加了一个Toast通知,以查看当屏幕打开时它是否会提醒我的接收器,它确实发出了警告,这可能是一个权限,我必须查看一下。好吧,我想我误解了您的问题(我很累,在火车上;))。无论如何,如果您通过接收者成功地接收到
意图
,那么就不应该存在任何权限问题。你的新活动代码看起来也不错,所以我很困惑!当调用
上下文时,logcat中是否有任何
ActivityManager
或类似的
Intent
相关条目。startActivity(startupIntent)
被调用?当我禁用键盘保护时,如果我在应用程序内部并打开和关闭屏幕,我注意到一些事情,我的Toast通知弹出,然后一秒钟后我的应用程序开始活动。当手机上的其他应用程序或主屏幕显示时,是什么原因导致它无法启动?创建服务是否有助于解决此问题?2014年4月4日,这对我来说仍然很有效,但只有在我向
IntentFilter filter = new IntentFilter (Intent.ACTION_SCREEN_ON);

BroadcastReceiver mReceiver = new StartupBroadcastReceiver();
    registerReceiver(mReceiver, filter);