打开网址时,我在某些设备上遇到以下错误。我的设备上没有任何错误,但很多设备都有。
Fatal Exception: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=https://google.com/... }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2076)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1720)
at android.app.Activity.startActivityForResult(Activity.java:5258)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:574)
at android.app.Activity.startActivityForResult(Activity.java:5203)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:560)
at android.app.Activity.startActivity(Activity.java:5587)
at android.app.Activity.startActivity(Activity.java:5555)
发生错误的代码非常简单。
Uri uri = Uri.parse("https://google.com");
try {
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
builder.setShowTitle(true);
CustomTabsIntent customTabsIntent = builder.build();
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://"));
ResolveInfo resolveInfo = getPackageManager().resolveActivity(browserIntent, PackageManager.MATCH_DEFAULT_ONLY);
if (resolveInfo != null && resolveInfo.activityInfo.packageName.length() > 0) {
customTabsIntent.intent.setPackage(resolveInfo.activityInfo.packageName);
}
customTabsIntent.launchUrl(this, uri);
} catch (ActivityNotFoundException e) {
// Do nothing
}
在某些设备(不是旧设备,主要是最新设备)中,触发了异常,但怎么可能呢?这意味着设备有0 个浏览器?如果是这样,我的问题是即使用户禁用了所有浏览器,我如何打开 url ?提前致谢。
注意:在升级到实时版本的自定义选项卡之前,我使用以下代码打开 url,但我总是得到ActivityNotFoundException:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(browserIntent);
这是打开任何 url 但不使用 try/catch 导致崩溃的最简单的代码。使用普通方式或自定义选项卡都没有关系,它总是会导致ActivityNotFoundException。我正在寻找一个解决方案,无论发生什么都会打开 url。我不确定这是否可能。
Note2: MinApi 是 Android 5.0 (Lollipop)