ol_*_*_er 17 android android-intent android-notifications
当我从通知中启动它时,我的某个应用程序出现问题.它从未出现在"最近的应用"列表中.
没有通知,每件事都按预期工作:我启动应用程序,导航进入,当我退出它时(使用主页按钮或后退按钮)之后,我可以通过长按主页按钮=>确定返回到它.
当我收到通知时,问题就开始了.如果我从通知启动应用程序,它会启动正确的屏幕,我可以使用app => ok.但是当我退出应用程序(使用主页或后退按钮)时,它不再出现在"最近的应用程序"列表中.更确切地说:
下面是我在状态栏中添加通知的原始代码:
mNotification = new Notification(R.drawable.ic_notif, message, System.currentTimeMillis());
mNotification.flags |= Notification.FLAG_AUTO_CANCEL;
Intent notificationIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(link));
notificationIntent.putExtra(...);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
mNotification.setLatestEventInfo(context, context.getString(R.string.app_name), message, contentIntent);
notificationManager.notify(ConfigApp.NOTIFICATION_ID, mNotification);
Run Code Online (Sandbox Code Playgroud)
我尝试添加FLAG_ACTIVITY_NEW_TASK但它没有帮助:
Intent notificationIntent = new Intent(Intent.ACTION_VIEW,Uri.parse(link));
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
notificationIntent.putExtra(...);
Run Code Online (Sandbox Code Playgroud)
通知启动的活动的清单声明:
<activity
android:name=".activity.ActivityMessages"
android:label=""
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="hostapp"
android:pathPrefix="/prefixapp"
android:scheme="schemeapp" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
有人知道如何在通知启动后将应用程序保留在"最近的应用程序"列表中吗?
将操作android.intent.action.MAIN和类别添加android.intent.category.LAUNCHER到您的活动规范中.有两个动作和类别似乎是一个黑客,但它实际上是由Android支持.
<activity
android:name=".activity.ActivityMessages"
android:label=""
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<data
android:host="hostapp"
android:pathPrefix="/prefixapp"
android:scheme="schemeapp" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
这应该将它添加到最近的应用程序列表中.原因在Android开发人员文档中描述:
这种意图过滤器会导致活动的图标和标签显示在应用程序启动器中,从而为用户提供启动活动并在启动后随时返回创建的任务的方法.
第二种能力很重要:用户必须能够离开任务,然后使用此活动启动器返回该任务.因此,仅当活动具有ACTION_MAIN和CATEGORY_LAUNCHER过滤器时,才应使用将活动标记为始终启动任务的两种启动模式"singleTask"和"singleInstance". 例如,想象一下,如果会发生什么,如果过滤器丢失:一个intent启动"singleTask"活动,启动一个新任务,用户花一些时间在该任务中工作.然后用户按下Home按钮.任务现在被发送到后台并且不可见现在用户无法返回任务,因为它没有在应用程序启动器中表示.
| 归档时间: |
|
| 查看次数: |
2102 次 |
| 最近记录: |