我正在开发一项正在进行的服务,该服务侦听与无线电的USB接口连接。找到这样的连接后,此服务将更新其通知以反映所述连接;当连接丢失(例如通过拔出事件或无线电被关闭)时,此服务将更新其通知以反映所述断开连接。此服务在检测到更改时也会写入数据库,因此其他应用程序可以利用该信息。

此服务可在未配置OTG存储的USB端口上正常运行。但是,当使用启用了OTG存储的USB端口时,即使数据库已正确写入,也会遇到一些服务通知无法正确更新的问题。我相信这是因为我要连接的无线电也充当OTG存储设备,因此一旦与所述无线电建立连接,就会发生OTG存储通知,并且我可能会丢失通知上下文。此外,如果在OTG存储器能够正确装入之前与无线电断开连接,则服务通知和数据库将正确更新。

例如,如果我当前已连接到无线电并且已安装OTG存储,如果我断开了所述无线电,则OTG存储将卸载,但我的服务通知将不会反映该更改,即使我可以看到数据库中发生了更改正确地。

我在Android 4.0.4上运行此代码,因此我认为此问题仅是因为我的代码已弃用:

import android.app.Notification;
import android.app.Notification.Builder;
import android.app.NotificationManager;
import android.app.PendingIntent;

Notification notification = new Notification(icon, contentTitle, time);
notification.setLatestEventInfo(this, contentTitle, contentText,
            contentIntent);

notification.flags = Notification.FLAG_FOREGROUND_SERVICE
            | Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT;

notificationManager.notify(NOTIFICATION_ID, notification);


但是更新到Notification.Builder时仍然有问题:

Notification.Builder notiBuilder =
            new Notification.Builder(this);

notiBuilder.setSmallIcon(icon);
notiBuilder.setContentTitle(contentTitle);
notiBuilder.setContentText(contentText);
notiBuilder.setContentIntent(contentIntent);
notiBuilder.setPriority(2);

notificationManager.notify(NOTIFICATION_ID, notiBuilder.getNotification());


所以我对可能是什么问题感到困惑。

如果您有任何想法或建议,或者我应该包含任何代码以帮助您,请告诉我。

最佳答案

更新:问题不是在实际的通知中出现,而是在OTG存储与我的服务在侦听同一拔出事件之间出现竞争状态。为了解决此问题,我让我的服务侦听了OTG存储状态的更改。尽管公认的解决方法比什么都重要,但这似乎已经解决了该问题。

07-27 13:39