这似乎是一个常见的问题,我浏览了我已经可以找到的所有相关问题:活动没有获得新的意图,为什么没有在android通知意图中发送额外的数据(整数)?,通知传递旧的意图额外内容,无法在通知中放置意图的额外内容,android未决意图通知问题;但仍然无法解决这个问题。
问题是一样的。我设置了一个带有一些额外信息的PendingIntent通知,但我在另一边没有得到它。
以下是生成通知的代码:
Notification notification = new Notification(R.drawable.icon, getResources().getString(R.string.notification_ticker), System.currentTimeMillis());
notification.flags = Notification.FLAG_AUTO_CANCEL | Notification.FLAG_ONLY_ALERT_ONCE;
Intent start_test = new Intent(this, MyActivity.class);
start_test.putExtra("start_test", true);
start_test.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pi = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), start_test, PendingIntent.FLAG_CANCEL_CURRENT);
notification.setLatestEventInfo(this, getResources().getString(R.string.notification_title), getResources().getString(R.string.notification_content, expired), pi);
nm.notify(NOTIFICATION_ID, notification);
另一方面:
boolean start_test=getIntent().getBooleanExtra("start_test", false);
捆绑包实际上不存在(getExtras()返回null)。
我尝试了pendingent的不同标志。getActivity
(FLAG\u UPDATE\u CURRENT
,FLAG\u CANCEL\u CURRENT
,FLAG\u ONE\u SHOT
),这些都没有帮助。
如代码所示,我使用getCurrentMillis来确保requestID发生更改。。。。
还发现在MyActive中,onCreate
和onNewIntent
没有被调用。只有onResume
是。即使FLAG_ACTIVITY_NEW_TASK
已设置...?
我错过了一些非常简单的东西吗?
>
如果不需要,那么避免将清单中的活动设置为单个任务。如果可以,请省略这一行或将其更改为singleTop:
android:launchMode="singleTask”
如果必须有一个任务,那么在pending intent中将标志设置为:intent。标记|活动|新任务|意图。标记活动、清除任务和挂起内容。标记取消当前。
resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_CLEAR_TASK);
pIntent = PendingIntent.getActivity(context, 0, resultIntent, PendingIntent.FLAG_CANCEL_CURRENT );
如果您只有一项任务,请通过setIntent(intent)重置onNewIntent()内活动中的额外任务;
protected void onNewIntent(Intent intent) {
setIntent(intent);
...
}
我刚刚添加了PendingIntent。FLAG_UPDATE_CURRENT
标志到我的未决意图,它开始为我工作(跳过Intent的所有标志)。
示例代码:
PendingIntent pendIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
为通知意图设置FLAG_ACTIVITY_NEW_TASK
,将导致以下情况:
>
如果活动尚未在任务中运行,则将启动一个新任务,并在onCreate()中将意图传递给活动
但是,如果活动已经在任务中运行,则该任务将被带到前台。仅此而已。Intent将不会被传递,也不会调用
onNewIntent()
。
如果您希望实际交付Intent,您需要指定:
start_test.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
活动的
launchMode
是否为singleTop
没有区别,您仍然必须指定意图。在意图中标记活动单顶部
。
注意:如果活动已在任务中运行,且该活动不在该任务的活动堆栈顶部,则该任务将被带到前台。这就是全部。意图将不会实现。实现这一点的唯一方法是添加
意图。将_ACTIVITY _CLEAR _TOP
标记为其他两个标记,但这可能不是您想要的(取决于您的具体场景)。
请参阅我(仍)在谷歌代码上的公开问题,网址为http://code.google.com/p/android/issues/detail?id=17137
有没有一种方法可以只从一个类中接收意图附加内容?例如,我有两个使用意图打开第三个活动的活动。现在我只希望前两个中的一个通过附加内容,这样我就可以在第三个活动中接收它。 我已经实现了所有功能,但它会崩溃,因为当我打开第二个没有添加额外功能的第三个活动时,它会崩溃我的应用程序。 为了更清楚地描述它: 活动1:通过意向附加 活动1和2都使用意图来启动活动3,但我只需要活动1中的额外内容。
我正在尝试启用设备管理,这样我就可以在Android9中创建二级用户。 首先,使用ACTION_ADD_DEVICE_ADMIN发送一个意图,如下所示: deviceAdminReceiver必须在manifest.xml中预先定义,并使用适当的意图筛选器: 注意:我遵循了以下谷歌Android指南https://developer.Android.com/guide/topics/admin/d
问题内容: 我想我要跳过通过。但是我找不到多余的东西吗?任何get方法都会收到类似“不适用于字符串”之类的错误。 项目详细信息: 我的课: 我的putExtra: GetChild函数: 但是我找不到我应该怎么写来获取arrayList? 问题答案: 但是我找不到应该怎么写来获取arrayList 简短答案:您不能。您只能通过,然后使用 但是 。如果要通过Intent传递自定义对象,则必须实现以下
我正在使用Android TaskStackBuilder,以便在单击通知时使用预定义的堆栈创建通知。 在应用程序中,我有2项活动: 主活动发射器 活动B 在主活动中,我使用TaskStackBuilder和以下堆栈显示通知:[MainActivity(启动器意图),ActivityB] 当通知显示时,我拉下状态栏并单击通知,然后我看到预期的ActivityB,当单击back按钮时,我也看到预期的
问题内容: 我希望能够发出通知,以提醒用户有关计时器已结束的信息,但是,当您单击通知时,我不希望有任何意图。 我已经尝试将null传递给意图 问题答案: 您可以传递参数 代替 上
我知道,要放入值,我可以,要检索值,我可以,但在下面的代码中,它的行为不像预期的那样。检索值时,我获得。 设置值的代码: 并且我正在检索BroadCaseReceiver的onReceive中的值:[省略的无关代码]