从服务android启动Activity

时间:2014-10-27 13:32:57

标签: android android-activity service

我有从服务开始活动的任务,我使用以下代码:

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

当应用程序设置为后台时,此工作正常。但是当应用程序关闭时,该服务仅解锁手机但不启动我的活动。你们中的任何人都知道如何实现所需的功能。提前谢谢!

编辑>问题出在解锁阶段。在第一次出现事件时,手机会解锁,但不会开始活动。如果手机解锁,则在第二次出现时,活动开始。

1 个答案:

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