Android 7.0适配 打开文件和分享文件

xiaoxiao2021-02-28  28

嗯,我就闲来无事想说一句,我是可爱的分割线(●’◡’●)。

7.0的禁止不安全路径被外部访问。其中典型例子就是拍照。所以我以为分享图片也是需要适配,实验得知并不是。分享走的是系统的,所以不会有错误,如果你是打开文件的话,那么久需要适配content URL了。

可是6.xx之后要动态申请权限,所以如果是对文件会发生读写操作的话需要把,申请读写权限意图说明。也就是 addFlags。

1.Intent.FLAG_GRANT_WRITE_URI_PERMISSION content URL 写入权限 2.Intent.FLAG_GRANT_READ_URI_PERMISSION content URL 读取权限

一:打开pdf文件的代码 因为要适配7.0以上,所以介绍下如何谁配content URL。

以下是代码使用,

Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { //data是file类型,忘了复制过来 uri = FileProvider.getUriForFile(mActivity, "com.cango.palmcartreasure.fileprovider", data); } else { uri=Uri.fromFile(data); } //pdf文件要被读取所以加入读取权限 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setDataAndType(uri, "application/pdf"); try { startActivity(intent); } catch (Exception e) { e.printStackTrace(); }

在start的时候,最好加入try——catch

二:分享pdf文件 不截图了,使用方法和以前没区别,走系统的所以不会发生异常处理。具体原因自己百度,反正我不知道,知道的告诉我下,告诉我我也不感激你。

Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.addCategory("android.intent.category.DEFAULT"); Uri pdfUri; pdfUri = Uri.fromFile(data); intent.putExtra(Intent.EXTRA_STREAM, pdfUri); intent.setType("application/pdf"); try { mContext.startActivity(Intent.createChooser(intent, data.getName())); } catch (Exception e) { e.printStackTrace(); }

讲完了,(●’◡’●)。

转载请注明原文地址: https://www.6miu.com/read-1000157.html

最新回复(0)