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

12

我正在尝试使用以下代码打开本地HTML文件,并在默认浏览器中显示:

Uri uri = Uri.fromFile(file);
Intent browserIntent = new Intent(Intent.ACTION_VIEW).setData(uri);
startActivity(browserIntent);

但我得到了以下异常:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///sdcard/SolveDroid/solution.html }
我很困惑-我是否应该创建一个活动来处理Web浏览器?它不应该只是调用它的活动吗?
请给予建议 :)
更新: 如果我像这样传递URL,相同的代码可以工作: Uri uri = Uri.parse("http://www.metalist.co.il");

你要启动哪个活动?你的代码中写着 startActivity(),但是具体是哪个活动呢? - TeaCupApp
你的意思是什么? 我应该调用特定的Activity吗?默认的浏览器不已经是一个Activity了吗? - levtatarov
3个回答

9
    Uri uri = Uri.fromFile(file);
    Intent browserIntent = new Intent(Intent.ACTION_VIEW);
    browserIntent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
    browserIntent.setData(uri);
    startActivity(browserIntent);

文件必须以这种格式出现:file://sdcard/somedir/somefile - Nicolas Raoul
无法在Android 3.2和4.0.4上运行,请参见https://dev59.com/QmLVa4cB1Zd3GeqPxZDa,有任何解决方法吗? - Nicolas Raoul

8
我找到了解决这个问题的方法……只需要添加


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

我使用Uri.fromfile(file)将其与“file://” URI一起使用,它可以运行(Android v.2.2.1)。


3

试试这个

Intent in = new Intent(Intent.ACTION_VIEW);
            File f=new File("/sdcard/html.html");
            in.setDataAndType(Uri.fromFile(f), "text/html");
            startActivity(in);

短短几年后,/sdcard文件夹消失了(被一个难以理解的“外部私有文件夹”的嵌套所代替)。我应该把临时文件写到哪里,才能让网络浏览器读取它? - Phlip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接