Android开发问题笔记
1.引言
好久没写东西了,感觉技术遇到新的瓶颈。最近开发中遇到几个小问题,准备记录下。
2.正题
2.1 调用wps打开word报错
app调用wps等 查看word/excel文档。
public void openFileByPath(Context context, String path) {
if (context == null || path == null || !new File(path).exists()) {
ToastUtils.showShort("文件不存在");
return;
}
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_VIEW);
Uri uri = UriUtils.file2Uri(new File(path));
try {
intent.setDataAndType(uri, FilePathUtil.getFileType(path));
context.startActivity(intent);
} catch (Exception e) { //当系统没有携带文件打开软件,提示
ToastUtils.showShort("无法打开该格式文件!");
e.printStackTrace();
}
}
百度,打开wps查看word,百分之80 都是这个方法,可是这个方法在7.0以前行得通。但是在8.0+ 打开文档,提示文档类型损坏。无法打开。。。因为8.0 对权限进一步要求严格了。需要给intent设置权限,添加flag。添加下面一句话就能解决问题:
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
2.2 8.0 Only fullscreen activities can request orientation
7.0是没得问题的。8.0 才有问题
原因:windowIsTranslucent=true 和setRequestedOrientation同时存在,然后报错。解决方法将sdk 社会成26。或者避免俩者同时使用
2.3 9.0 应用是否打算使用明文网络流量
android:usesCleartextTraffic
设置应用是否打算使用明文网络流量, 如明文 http。默认值为"true".
当属性设置为"false"时, 平台组件 (例如, http 和 ftp 堆栈、 DownloadManager、 MediaPlayer) 将拒绝应用使用明文流量的请求。强烈建议第三方库也遵守此设置。避免明文通信的主要原因是缺乏保密性、真实性和防止篡改的保护: 网络攻击者可以窃听传输的数据并在不被检测到的情况下对其进行修改。
此标志是在尽最大努力的基础上获得的, 因为考虑到向 android 应用程序提供的访问级别, 不可能防止这些应用程序的所有明文流量。例如, 没有期望Socket api 会遵守此标志, 因为它无法确定其流量是否为明文。但是, 来自应用程序的大多数网络流量都是由更高级别的网络堆栈组件处理的, 这些组件可以通过从ApplicationInfo.flags NetworkSecurityPolicy.isCleartextTrafficPermitted().