我添加了一个在通知中显示的按钮,根据条件,如果通知中包含http,它将显示“显示图像/视频”按钮。下面是相同的代码。
else if (!iurl.isEmpty()) {
builder.addAction(R.drawable.noticon, "Show Images/Videos", resultPendingIntent);
这是resultPendingIntent的代码。
if (iurl.contains("http")) {
Log.i(TAG, "http");
intent1.putExtra("action", "http");
intent1.putExtra("url", iurl);
intent1.putExtra("id", ID_SMALL_NOTIFICATION);
resultPendingIntent =
PendingIntent.getBroadcast(
mCtx,
ID_SMALL_NOTIFICATION,
intent1,
PendingIntent.FLAG_CANCEL_CURRENT
);
上面的代码工作正常,我收到了一个接收器,当用户单击按钮时,其动作定义如下。
if (bundle.containsKey("action")) {
actiontype = bundle.getString("action");
if (bundle.containsKey("url")) {
url = bundle.getString("url");
}
Log.i(TAG, "Received action: " + actiontype);
if (actiontype != null && actiontype.equalsIgnoreCase("http")) {
Intent intent1 = new Intent(Intent.ACTION_VIEW);
intent1.setData(Uri.parse(url));
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
}
}
但是现在,这段代码并没有打开chrome来启动url,而是弹出了意图选择器,其中包含不相关的选项,例如拨号器,地图等,以进行操作。
如果我使用应用的“正常”活动更改ACTION_VIEW,一切正常。
请帮助。
答案 0 :(得分:0)
我希望这会有所帮助:
void open(Activity activity, String url) {
Uri uri = Uri.parse("googlechrome://navigate?url=" + url);
Intent i = new Intent(Intent.ACTION_VIEW, uri);
if (i.resolveActivity(activity.getPackageManager()) == null) {
i.setData(Uri.parse(url));
}
activity.startActivity(i);
}