我的应用正在生成一个HTML文件,然后我想向用户显示,我的代码如下 -
Uri uri = Uri.parse("file://" + fileName);
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setDataAndType(uri, "text/html");
browserIntent.addCategory(Intent.CATEGORY_BROWSABLE);
startActivity(browserIntent);
然后它显示“使用完整操作”,但仅列出FireFox浏览器。我有Chrome,Opera和也安装了Dolphin浏览器。为什么我不选择所有这些?谢谢。
答案 0 :(得分:5)
我认为可以使用选择器从单一意图中使它们全部工作。到目前为止,我发现了3种略有不同的意图 -
// chrome ??
Intent intent1 = new Intent(Intent.ACTION_VIEW);
intent1.setDataAndType(uri, "multipart/related");
// default "Internet" browser
Intent intent2 = new Intent(Intent.ACTION_VIEW, uri);
intent2.setDataAndType(uri, "text/html");
intent2.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
// any other browser (FireFox/HTML Viewer) ??
Intent intent3 = new Intent(Intent.ACTION_VIEW);
intent3.setDataAndType(uri, "text/html");
intent3.addCategory(Intent.CATEGORY_BROWSABLE);
使用此处提供的解决方案,可以将所有这些意图放入一个选择器中 - How to make an intent with multiple actions
我保持logcat的答案被接受,因为它向我展示了我需要去的地方。感谢。
答案 1 :(得分:2)
你可以使用rooted phone,抓住Chrome apk,使用apktool来查看清单。在那里你会看到Chrome支持通常只计划http / https / about / javascript,并且在以下的intent过滤器中只提供一次文件方案:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="multipart/related" android:scheme="file"/>
</intent-filter>
因此,您可以尝试更改mime类型并对其他浏览器执行相同的调查。
答案 2 :(得分:1)
其他应用程序可能不支持file://
方案。无法保证设备具有能够加载本地文件的浏览器。
答案 3 :(得分:1)
根据您的应用程序结果,如果确实没有需要,您可以执行WebView
并避免这项工作选择浏览器来打开您的html文件。很简单,您可以使用以下代码创建web_file_reader.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".WebActivity" >
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/web_viewer1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<Button
android:id="@+id/but_leave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="leave page" />
</RelativeLayout>
因此,在您的课程onCreate
回调方法中,请执行:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.relatorios_activity);
Button leave = (Button) findViewById(R.id.but_leave);
sair.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
finish();
}
});
String fileURL = "file://" + filePath; //it's your file path name string
WebView webView = (WebView) findViewById(R.id.wev_viewer1);
webView.setVerticalScrollBarEnabled(true);
webView.setHorizontalScrollBarEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.loadUrl(fileURL);
}
设置按钮以从主要活动中打开以下意图:
Intent browserView = new Intent(/*your main activity context*/,WebActivity.class);
startActivity(browserView);
这将打开任何带有布局和/或java脚本配置的html文件,具体取决于您在新活动中的O.S版本。