如何在Android中的Webview中打开Excel,.doc文件?

时间:2012-10-09 10:07:27

标签: android

如何在Android webview中打开Excel和.doc文件。 可以谷歌doc支持它吗?

2 个答案:

答案 0 :(得分:19)

是Google文档支持您显示doc或excel,pdf,text或其他格式。

答案 1 :(得分:2)

如果您要从内部存储打开文档文件,例如 file:///data/user/0/com.sample.example/files/documents/sample.docx ,则您不能使用

urlWebView.loadUrl("http://docs.google.com/gview?embedded=true&url="+"YOUR_DOC_URL_HERE");

您必须从外部应用程序(例如google docs,MS Word等)打开docx文件,为此,您可以使用FileProvider


在AndroidManifest.xml文件中添加<provider>

<application>
 <provider
   android:name="androidx.core.content.FileProvider"
   android:authorities="com.sample.example.provider" // you have to provide your package name here add add .provider after your package name
   android:exported="false"
   android:grantUriPermissions="true">
   <meta-data
      android:name="android.support.FILE_PROVIDER_PATHS"
      android:resource="@xml/file_paths" />
 </provider>
</application>

添加 res / xml / file_paths.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<paths>
  <root-path name="root" path="." />
</paths>

最后在 MainActivity.java 文件中添加用于打开docx文件的代码

StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
builder.detectFileUriExposure();

Uri docUri = FileProvider.getUriForFile(getApplicationContext(), 
  "com.sample.example.provider", 
  new File("/data/user/0/com.sample.example/files/documents/sample.docx")); // same as defined in Manifest file in android:authorities="com.sample.example.provider"
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(docUri, "application/msword");
try{
   intent.setFlags(FLAG_GRANT_READ_URI_PERMISSION | FLAG_GRANT_WRITE_URI_PERMISSION);
   Intent chooser = Intent.createChooser(intent,"Open With..");
   startActivity(chooser);
} catch (ActivityNotFoundException e) {
   //user does not have a pdf viewer installed
   Log.d(LOG_TAG, "shouldOverrideUrlLoading: " + e.getLocalizedMessage());
   Toast.makeText(MainActivity.this, "No application to open file", Toast.LENGTH_SHORT).show();
}