使用 ACTION_VIEW 打开浏览器 link 无法在应用程序外部通知

Opening browser link with ACTION_VIEW not working for notification outside app

不久前我有一段运行良好的代码:

Intent browserAction = new Intent(Intent.ACTION_VIEW, uri);
browserAction.setData(uri);
browserAction.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(browserAction);

它位于 BroadcastReceiveronReceive 内,用于通过通知操作触发浏览器(一个 PendingIntent 也做其他事情)。出于某种原因(可能 android 更新),它现在仅在我在前台使用我的应用程序阅读通知时才有效。如果我在我的应用程序之外并单击通知操作,则不会调用浏览器。

关于可能发生的事情以及我应该检查的内容有什么想法吗?

编辑:如果我直接从 Intent.ACTION_VIEW 执行 PendingIntent(而不是在 BroadcastReceiver 中使用 Intent.ACTION_VIEW),即使在应用程序外部也会很好地触发该操作。但我不能依赖这个,因为我的 BroadcastReceiver 在调用浏览器后做了其他事情。

您需要使用 pending intent 而不是简单的意图。因为通知通常只会在您的应用程序处于后台时触发 pending intents。 所以,请试试这个代码。

Intent browserAction = new Intent(Intent.ACTION_VIEW, uri);
browserAction.setData(uri);
browserAction.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

// Create the PendingIntent
PendingIntent notifyPendingIntent = PendingIntent.getActivity(
        this, 0, browserAction, PendingIntent.FLAG_UPDATE_CURRENT
);

更新

这个答案对你有用。请参考这个

refer this