4

使用 android 2.xi 可以使用该解决方案

browserIntent.setClassName("com.android.browser", "com.android.browser.BrowserActivity") 

在帖子中解决:

使用 Android 浏览器打开本地 html 文件

但是使用 android 3.2 我有这个错误:

Unable to find explicit activity class 
(com.android.browser/com.android.browser.BrowserActivity); 
have you declared this activity in your AndroidManifest.xml?

我认为该类com.android.browser.BrowserActivity在 Android 3.x 中不存在

有什么解决办法吗?

4

3 回答 3

2

不是一个令人满意的解决方案,但在一个演示应用程序中,我替代地使用了以下代码:

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);

通常至少有两个作品中的一个。

https://github.com/nicolas-raoul/OxygenGuide-Android/blob/master/src/org/github/OxygenGuide/MainActivity.java#L69

于 2013-09-09T02:59:07.520 回答
1
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”类型数据的活动。通过查看。这将为您提供一个应用程序列表(不同安装的浏览器)供您选择。

于 2015-01-12T10:48:05.030 回答
0
Uri uri = Uri.parse(url);
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setDataAndType(uri, "text/html");
browserIntent.addCategory(Intent.CATEGORY_BROWSABLE);
startActivity(browserIntent);
于 2015-10-24T20:17:42.303 回答