【发布时间】:2011-12-15 17:01:55
【问题描述】:
当 C2DM 消息到达移动设备时,在处理从 BroadcastReceiver 创建的通知时,我的 android 应用程序遇到了奇怪的行为。我正在执行以体验此行为的流程如下:
- 启动我的应用程序,显示DashboardActivity;
- 按主页按钮或返回按钮关闭应用程序;
- 接收推送消息并创建通知;
- 点击通知项,启动活动BookingOfferActivity;
- 通过按主页或返回按钮或调用finish()关闭BookingOfferActivity
- 长按主页按钮并从最近的应用程序中选择我的应用程序
- 显示 BookingOffcerActivity 而不是 DashboardActivity
正在使用以下代码从通知中启动 BookingOfferActivity:
Intent notificationIntent = new Intent(context, BookingOfferActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Bundle b = new Bundle();
b.putSerializable("booking", booking);
notificationIntent.putExtras(b);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate;
notification.flags = Notification.FLAG_AUTO_CANCEL;
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(AppUtil.getNextPushIndexBooking(), notification);
BookingOfferActivity 在 AndroidManifest 中是这样定义的:
<activity android:name=".activity.BookingOfferActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
我的 DashboardActivity 是这样定义的:
<activity android:name=".activity.DashboardActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="stateHidden|adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我称其为奇怪行为的原因是,我想在我的应用程序由用户启动或重新启动时启动 DashboardActivity,而不是由通知项启动。因此,在关闭、完成或销毁 BookingOfferActivity 并通过访问最近打开的应用程序(长按主页按钮)或访问应用程序列表上的启动器图标由应用程序重新打开后,我想查看仪表板。
我创建了一个与这个类似的问题,但我没有提供太多细节,所以我关闭了另一个并打开了这个包含更多数据的问题。
非常感谢您提供有关如何解决此问题的任何指导
T
【问题讨论】:
标签: android android-activity notifications instance