读取由FileProvider创建的Uri路径文件

val uri = intent.clipData.getItemAt(0).uri
//读取由FileProvider传递的uri文件
val fileDecript= contentResolver.openFileDescriptor(uri,"w")
fileDescriptor= fileDecript.fileDescriptor

使用FileInputStream 或者 FileOutPutStream 操作fileDescriptor来实现对文件的读取或者写入。

转载于:https://www.cnblogs.com/lzh-Linux/p/8761346.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 11中,由于对文件访问权限进行了限制,使用FileProvider来读写文件已经成为了一种标准的方式。 以下是使用FileProvider读写文件的步骤: 1. 在AndroidManifest.xml文件中定义FileProvider: ``` <provider android:name="androidx.core.content.FileProvider" android:authorities="包名.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> ``` 其中,`android:authorities`是FileProvider的标识符,`android:grantUriPermissions`表示是否授予其他应用访问权限,`android:exported`表示是否允许其他应用调用。 2. 在res/xml目录下创建file_paths.xml文件,定义FileProvider路径: ``` <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-files-path name="my_images" path="Pictures" /> </paths> ``` 其中,`<external-files-path>`表示文件路径,`name`是自定义的名称。 3. 在代码中使用FileProvider读写文件: ``` File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), "test.jpg"); Uri uri = FileProvider.getUriForFile(this, "包名.fileprovider", file); try { InputStream inputStream = getContentResolver().openInputStream(uri); // 读取文件内容 OutputStream outputStream = getContentResolver().openOutputStream(uri); // 写入文件内容 } catch (IOException e) { e.printStackTrace(); } ``` 其中,`FileProvider.getUriForFile()`方法将文件转换为Uri,`getContentResolver().openInputStream()`方法和`getContentResolver().openOutputStream()`方法分别用于读取和写入文件内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值