在浏览器中打开 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 要显示的内容。