我的发射器活动意图有问题.Scenerio是:
1.向我的启动器活动发送意图表单通知服务
PendingIntent contentIntent = PendingIntent.getActivity(this, TripLoggerConstants.PENDING_TRIPS_NOTIFICATION_ID, new Intent(this, MainActivity.class).putExtra("is_log", true), Intent.FLAG_ACTIVITY_CLEAR_top);
2.在我的MainActivity中,我得到了这个意图.代码是:
if(this.getIntent().getExtras()!=null){ boolean isLogNewTripScreen = (boolean)this.getIntent().getExtras().getBoolean("is_log"); } }
3.这项工作正常,但是当我来自通知服务时,但是当我从非通知服务启动时,意图中的数据仍然存在.如何从意图中删除该数据.
解决方法:
编辑:我已经创建了一个示例应用程序来测试这个问题和可能的解决方案.以下是我的发现:
如果您通过附加通知启动应用程序,然后通过从最近任务列表中选择它来返回应用程序,AndroID将再次启动应用程序,方式与通知启动时相同(即:使用附加功能).这可能是错误或功能,具体取决于您的要求.
您需要添加其他代码来处理这种情况.我可以提供2条建议:
1.使用FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
创建通知时,在Intent中设置标志Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS.然后,当用户选择通知并从通知启动应用程序时,这将不会在最近任务列表中为此任务创建条目.此外,如果此应用程序的最近任务列表中有条目,则该条目也将被删除.在这种情况下,用户将无法从最近任务列表返回此任务.这可以通过消除用户从最近任务列表中启动应用程序的可能性来解决您的问题(但仅当应用程序已从通知启动时).
2.检测FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
当用户从最近任务列表中启动您的应用程序时,AndroID会在传递给您的启动活动的onCreate()的Intent中设置标志Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY.您可以在onCreate()中检测到此标志的存在,然后您知道该应用程序已从最近的任务列表启动,而不是从通知中启动.在这种情况下,您可以忽略Intent中的附加内容仍包含数据的事实.
选择最适合您应用程序工作流程的解决方案.谢谢你的问题,这是一个有趣的挑战:-)
附加信息:
您正在错误地创建PendingIntent.你在打电话
PendingIntent contentIntent = PendingIntent.getActivity(this, TripLoggerConstants.PENDING_TRIPS_NOTIFICATION_ID, new Intent(this, MainActivity.class).putExtra("is_log", true), Intent.FLAG_ACTIVITY_CLEAR_top);
您将Intent.FLAG_ACTIVITY_CLEAR_top作为第4个参数传递给getActivity().但是,该参数应为PendingIntent标志.如果要在Intent上设置FLAG_ACTIVITY_CLEAR_top,则需要这样做:
PendingIntent contentIntent = PendingIntent.getActivity(this, TripLoggerConstants.PENDING_TRIPS_NOTIFICATION_ID, new Intent(this, MainActivity.class).putExtra("is_log", true) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_top), 0);
总结 以上是内存溢出为你收集整理的android – 从通知意图中删除数据全部内容,希望文章能够帮你解决android – 从通知意图中删除数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)