使用 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);
它位于 BroadcastReceiver 的 onReceive 内,用于通过通知操作触发浏览器(一个 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
不久前我有一段运行良好的代码:
Intent browserAction = new Intent(Intent.ACTION_VIEW, uri);
browserAction.setData(uri);
browserAction.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(browserAction);
它位于 BroadcastReceiver 的 onReceive 内,用于通过通知操作触发浏览器(一个 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
);
更新
这个答案对你有用。请参考这个