打开第三方文档(office系列)
1,微软服务:
/op/?src=(文档的阿里云路径)
直接 贴代码
测试手机WebView 打不开路径,试了好一会,没出来,也可能是我的设置问题,浏览器正常打开
WebSettings webSettings = ();
// //如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
(true);
().setBlockNetworkImage(false);
if (.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
(true); //将图片调整到适合webview的大小
(true); // 缩放至屏幕的大小
//缩放操作
(true); //支持缩放,默认为true。是下面那个的前提。
(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
(false); //隐藏原生的缩放控件
//其他细节操作
(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存
(true); //设置可以访问文件
(true); //支持通过JS打开新窗口
(true); //支持自动加载图片
("utf-8");//设置编码格式
(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
(view, url);
(TAG, "onPageFinished: finish");
}
});
(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
(view, newProgress);
(TAG, "onProgressChanged: " + newProgress);
if (newProgress == 100) {
//todo 可以在这里关闭弹窗
}
}
});
2. 本地启动第三方软件,正常来说都是启动WPS。
这里区分7.0上下的,google在7.0更新了URI的机制,得配置FileProvider,
详细解说
为了兼容
Intent intent = new Intent();
(Intent.FLAG_ACTIVITY_NEW_TASK);
//设置intent的Action属性
(Intent.ACTION_VIEW);
//获取文件file的MIME类型
String type = getMIMEType(file);
//设置intent的data和Type属性。
if (.SDK_INT >= Build.VERSION_CODES.N) {
Uri data;
// 清单文件中配置的authorities
data = (context, getPackageName()+".fileprovider", file);
// 给目标应用一个临时授权
(data, type);
List<ResolveInfo> resInfoList = ()
.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = ;
(packageName, data, Intent.FLAG_GRANT_READ_URI_PERMISSION
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
}
} else {
((file), type);
}
try {
(intent);
} catch (Exception e) {
();
(TAG, "openFile:Exception " + ());
("没有找到合适的软件打开");
}
3,还有遇到的问题是假如(我的8.0三星)手机上没有合适的软件,或者选取了一个不合适的软件,那一直会报错没反应,我的手机上只有这个UC,但是启动会失败,应该是UC 不支持这个Activity外部调起(猜测)
Process: :fileService, PID: 27528
: Unable to start activity ComponentInfo{/}: : Package does not belong to 10117
at (:2961)
at (:3039)
at .-wrap11(Unknown Source:0)
at $(:1652)
at $(ProGuard:775)
at (:102)
at (:164)
at (:6746)
at (Native Method)
at $(:438)
at (:807)
at (:108)
Caused by: : Package does not belong to 10117
at (:2005)
at (:183)
at (:135)
at (:651)
at $(:1925)
at $(:10603)
at $(:10592)
at $(:10771)
at .<init>(:329)
at (:6961)
at (:2894)
at (:3039)
at .-wrap11(Unknown Source:0)
at $(:1652)
at $(ProGuard:775)
at (:102)
at (:164)
at (:6746)
at (Native Method)
at $(:438)
at (:807)
at (:108)
4,坑
我还遇到的问题是MIME类型没写全,坑死了,检查 .docx .pptx格式是否有添加。