我有从服务开始活动的任务,我使用以下代码:
KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
final KeyguardManager.KeyguardLock kl = km .newKeyguardLock("MyKeyguardLock");
kl.disableKeyguard();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
wakeLock.acquire();
Intent i = new Intent(this, someActivity.class);
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);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.putExtra("someName", theName);
startActivity(i);
当应用程序设置为后台时,此工作正常。但是当应用程序关闭时,该服务仅解锁手机但不启动我的活动。你们中的任何人都知道如何实现所需的功能。提前谢谢!
编辑>问题出在解锁阶段。在第一次出现事件时,手机会解锁,但不会开始活动。如果手机解锁,则在第二次出现时,活动开始。
答案 0 :(得分:2)
使用此代码它会对您有所帮助。
Intent i = new Intent(context,MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
//更多澄清 首先检查您的应用是否正在运行。 如果您的应用程序未运行,请调用此代码。
Intent i = new Intent(context,MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
如果正在运行,请使用此代码
Intent i = new Intent(context,MainActivity.class);
context.startActivity(i);