intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity")
将打开任何具有包名“com.android.browser”的应用程序。使用它的问题是,在各种版本的 android 和各种制造商中,默认浏览器会发生变化。例如,Nexus 设备往往预装了 chrome 应用程序,该应用程序具有不同的包名称。
Unable to find explicit activity class
(com.android.browser/com.android.browser.BrowserActivity);
have you declared this activity in your AndroidManifest.xml?
您复制的错误说明没有具有该包名称的应用程序 browserIntent.setClassName() 用于显式打开特定应用程序,这意味着它不应提供询问您要使用哪个浏览器的提示。
如果这是您想要避免的(弹出),那么您可以检查设备上的浏览器,并可能建议在链接可点击之前下载它。
您也可以使用其他建议中的代码。
String url = "content://com.android.htmlfileprovider/sdcard/mydir/myfile.html";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(url), "text/html");
startActivity(intent);
这指定您要打开一个可以处理“text/html”类型数据的活动。通过查看。这将为您提供一个应用程序列表(不同安装的浏览器)供您选择。