我正在开发基于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收到关于任务的消息,我点击通知,恢复启动器中的应用程序,而不是意图过滤器中的应用程序。
任何提示?
谢谢!