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);