4

我的应用程序在后台运行,并且我希望在运行以下代码时应用程序显示在 android 手机的顶部(启动)。(我知道代码肯定会运行)

这似乎是一件简单的事情,但我在这个网站上花了几个小时,每个人似乎都在建议这样的事情:

Intent intent = new Intent(myActivity.this, myActivity.class);
startActivity(intent);

但是,它并没有将应用程序带到最前面并启动它。

我通过通知启动的 PendingIntent 让它工作。我通过下面的代码完成了。但我希望应用程序自行启动,而无需用户点击通知。

Intent intent = new Intent(myActivity.this, myActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, REQUEST_CODE, intent, 0);
notification.setLatestEventInfo(this, "title", "msg", contentIntent);

我也试过:

Intent intent = new Intent("android.intent.action.MAIN");
startActivity(intent);

并标记意图:

intent.setFlags(Intent.FLAG_FROM_BACKGROUND);
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

但似乎没有做任何事情,任何帮助表示赞赏。

4

6 回答 6

5

您应该能够像这样调用自己的应用程序:

Intent intent = new Intent("android.intent.category.LAUNCHER");
intent.setClassName("com.your.package", "com.your.package.MainActivity");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

编辑:忘记添加 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

于 2012-05-24T21:00:00.303 回答
0

据我了解,您想要一个在后台和某个事件中运行的服务,您希望您的应用程序的活动出现在前面,即无论他在做什么,都在用户当前屏幕上。不建议让后台服务在没有用户操作的情况下启动应用程序。android开发者网站说

状态栏通知应该用于后台服务需要提醒用户需要响应的事件的任何情况。后台服务不应该为了接收用户交互而自行启动活动。该服务应该创建一个状态栏通知,在用户选择时启动该活动。

因此,不要试图让它自行启动。

于 2012-05-24T21:02:35.870 回答
0

我不在我的笔记本电脑自动取款机后面,所以我不确定,但我认为你必须通过上下文对象手然后执行 context.startactivity(intent);

对不起,我在手机自动取款机上

希望能帮助到你

于 2012-05-24T21:06:10.857 回答
0

我在这里抓着稻草,但你写道:

MyActivity 首先启动,然后我要么导航到另一个应用程序,要么直接点击主屏幕让我的应用程序在后台运行。

所以情况是你原来的 Activity 没有在后台运行,当你按下 HOME 时,它很可能已经停止并被销毁。您的后台任务仍然是孤立的,并且MyActivity.this 此时

尝试测试Log.i(TAG,MyActivity.this); 打印到 LogCat。

于 2012-05-24T21:09:58.363 回答
0

我最终使用了一个未决的意图,而不是直接尝试使用一个意图。像这样的东西:似乎要简单得多。

Intent.send(this, 0, intent);

谢谢。

于 2012-05-31T22:54:03.827 回答
0

此外,我已经看到自 compileSdkVersion 29 以来这是不可能的,除非有一些限制:

  • 活动最近才开始。
  • 该应用程序finish()最近调用了。
  • 通过 PendingIntent,但仅在发送通知几秒钟后。
  • 该应用已被用户授予 SYSTEM_ALERT_WINDOW 权限。...

https://developer.android.com/guide/components/activities/background-starts

于 2020-03-06T16:24:16.023 回答