【问题标题】:Start Activity from service android从服务android启动Activity
【发布时间】:2014-10-27 13:32:56
【问题描述】:

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

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

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

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

【问题讨论】:

标签: android android-activity service


【解决方案1】:

使用此代码会对您有所帮助。

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

【讨论】:

  • 问题出在解锁阶段。在第一次发生事件时,手机会解锁但不会启动活动。如果手机解锁,则在第二次发生时,活动开始。
  • 好的..您可以使用标志锁定/解锁场景并将其保存到共享优先级中。在服务类中您必须检查标志然后使用我上面的概念..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多