在浏览器中打开 URL 通知时出现 ActivityNotFoundException 单击
ActivityNotFoundException when opening a URL in browser on notification click
我正尝试在通知点击时打开 URL。安装了 2 个浏览器,包括 Chrome,但代码不起作用。
我正在使用这个:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(movieURL));
browserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(browserIntent);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, browserIntent, PendingIntent.FLAG_UPDATE_CURRENT);
通知:
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(R.mipmap.ic_launcher_foreground)
.setContentTitle(movieName + " is available")
.setContentText("Click here to open in browser")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setDefaults(Notification.DEFAULT_ALL)
.setContentIntent(pendingIntent)
.setAutoCancel(true);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(1, builder.build());
错误:
No Activity found to handle Intent { act=android.intent.action.VIEW dat=link>https: flg=0x10008000 }
Android 版本是 6,如果相关的话,我在 AsyncTask 中将其 运行 作为一项服务。 URL 没问题。我之前从它那里得到数据并且 'https://' 部分没有丢失。
我是 android 的新手,所以我希望得到一个简化的解释:)
请先检查一下,看看结果如何
if (browserIntent.resolveActivity(getPackageManager()) != null) {
startActivity(browserIntent);
}
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(movieURL));
我不确定 movieURL
包含什么,但是当您解析它时它会变成 link>https:
。这不是有效的 URL,并且 Android 将找不到能够为其处理 ACTION_VIEW
的应用程序。
请注意,从您的应用中引发 Notification
是不寻常的,其中 Notification
在单击时会启动第三方应用。 Notification
背后的典型要点是允许用户控制应用程序行为的各个方面。如果您的 objective 是从您自己的应用程序启动 activity,请不要使用隐式 Intent
(new Intent(Intent.ACTION_VIEW, ...)
)。相反,使用显式 Intent
(new Intent(this, YourAwesomeActivity.class)
)。您仍然可以使用 setAction()
或 putExtra()
附加信息来告诉 activity 要显示的内容。
我正尝试在通知点击时打开 URL。安装了 2 个浏览器,包括 Chrome,但代码不起作用。
我正在使用这个:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(movieURL));
browserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(browserIntent);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, browserIntent, PendingIntent.FLAG_UPDATE_CURRENT);
通知:
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(R.mipmap.ic_launcher_foreground)
.setContentTitle(movieName + " is available")
.setContentText("Click here to open in browser")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setDefaults(Notification.DEFAULT_ALL)
.setContentIntent(pendingIntent)
.setAutoCancel(true);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(1, builder.build());
错误:
No Activity found to handle Intent { act=android.intent.action.VIEW dat=link>https: flg=0x10008000 }
Android 版本是 6,如果相关的话,我在 AsyncTask 中将其 运行 作为一项服务。 URL 没问题。我之前从它那里得到数据并且 'https://' 部分没有丢失。
我是 android 的新手,所以我希望得到一个简化的解释:)
请先检查一下,看看结果如何
if (browserIntent.resolveActivity(getPackageManager()) != null) {
startActivity(browserIntent);
}
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(movieURL));
我不确定 movieURL
包含什么,但是当您解析它时它会变成 link>https:
。这不是有效的 URL,并且 Android 将找不到能够为其处理 ACTION_VIEW
的应用程序。
请注意,从您的应用中引发 Notification
是不寻常的,其中 Notification
在单击时会启动第三方应用。 Notification
背后的典型要点是允许用户控制应用程序行为的各个方面。如果您的 objective 是从您自己的应用程序启动 activity,请不要使用隐式 Intent
(new Intent(Intent.ACTION_VIEW, ...)
)。相反,使用显式 Intent
(new Intent(this, YourAwesomeActivity.class)
)。您仍然可以使用 setAction()
或 putExtra()
附加信息来告诉 activity 要显示的内容。