4

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

该应用程序提供了一个意图过滤器,用于打开特殊匹配链接,以便在“房间”字段已填充的情况下启动聊天应用程序。当我打开其中一个“特殊链接”时,应用程序会启动一个新任务,因此我可以同时运行 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);

如果我使用启动器中的应用程序一切正常,但是从意图过滤器启动的任务存在通知错误。如果我从意图过滤器收到有关任务的消息并且我点击通知,则启动器中的应用程序将恢复,而不是来自意图过滤器的应用程序。

有什么提示吗?

谢谢!

4

0 回答 0