如何在PendingIntents中使用FLAG_ACTIVITY_SINGLE_TOP和多个任务

时间:2013-05-15 19:07:51

标签: android android-intent android-notifications android-pendingintent

我正在开发基于SocketIO的Android多房间聊天应用程序。这是我的第一个Android应用程序,所以也许我错过了一些愚蠢的东西。应用程序的结构基本上是主屏幕的活动和连接到SocketIO服务器并提供聊天界面的活动。

该应用程序提供了一个意图过滤器,用于打开特殊匹配链接,以便启动已填充“房间”字段的聊天应用程序。当我打开其中一个“特殊链接”时,应用程序会启动一个新任务,因此我可以同时运行2个聊天会话。

意图过滤器代码

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http"
                  android:host="mychat.example.com"
                  android:pathPrefix="/mychat/room/" />
        </intent-filter>

除了通知之外,一切正常:每个通知都有一个关联的PendingIntent,用于在新消息到达时恢复聊天会话。为了恢复我正在使用Intent.FLAG_ACTIVITY_SINGLE_TOP。 这是恢复应用程序的代码

Intent intent = new Intent(getApplicationContext(), Room.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
mNotifyBuilder.setContentText(message.toString()).setNumber(++notificationMessages);
Notification note = mNotifyBuilder.setContentIntent(pIntent).build();
note.flags |= Notification.FLAG_AUTO_CANCEL;
mNotificationManager.notify(notificationID, note);

如果我使用启动器中的应用程序一切正常,但是从intent-filter启动任务时,通知会出现错误。 如果我从intent-filter收到关于任务的消息,我点击通知,恢复启动器中的应用程序,而不是意图过滤器中的应用程序。

任何提示?

谢谢!

0 个答案:

没有答案