我该如何在Android webview中打开Excel和.doc文件?谷歌文档是否支持此功能?
我该如何在Android webview中打开Excel和.doc文件?谷歌文档是否支持此功能?
是的,谷歌文档支持展示文档、Excel、PDF、txt或其他格式。
WebView urlWebView = (WebView)findViewById(R.id.containWebView);
urlWebView.setWebViewClient(new AppWebViewClients());
urlWebView.getSettings().setJavaScriptEnabled(true);
urlWebView.getSettings().setUseWideViewPort(true);
urlWebView.loadUrl("http://docs.google.com/gview?embedded=true&url="
+ "YOUR_DOC_URL_HERE");
public class AppWebViewClients extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
}
}
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();
}