Android读写文件,适配Q以上

本文介绍了在AndroidQ及以上版本中如何使用新的文件管理系统,包括打开文件管理器的方法、设置MIME类型访问特定文件,以及如何在10.0+系统下正确处理Uri转换和文件路径获取,重点是FileHelper类的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android Q升级了文件系统,访问文件不仅仅是说动态权限了,有各种限制。权限什么的就不赘述了,下面介绍一下在10以上的系统中访问文件。

首先是打开文件管理器

    /**
     * 打开文件管理器 存储卡和外接U盘都可以访问
     */
    public void openFileManager() {
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("text/*");
        startActivityForResult(intent, REQUEST_CODE_FILE);
    }

这个setType可以根据自己的需要,设置MIME类型,设置要访问什么类型的文件。具体MIME可以参考MIME类型-优快云博客

然后会打开文件管理器,这里面可以访问手机存储的文件或者外插U盘内的文件,就根据自己需求选择文件就可以了。

选中的文件会在onActivityResult中返回

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && requestCode == REQUEST_CODE_FILE){
            //拿到需要解析的文件
            Uri uri = data.getData();
            String filePath= FileHelper.getFileAbsolutePath(this,uri);
            if (!TextUtils.isEmpty(filePath)){
                parseFile = new File(filePath);
                binding.tvFileName.setText(parseFile.getName());
                readFile();
            }
        }
    }

这里关键的一点就是把拿到的uri转换成filePath了,转换成路径之后就可以读文件,根据需求进行操作了。这个FileHelper转自Android打开系统文件管理器,并获取选中文件的路径,适配Android10及以上无法获取路径_intent.settype获取文件-优快云博客

package com.......utils;


import android.content.ContentResolver;
import android.content.ContentUris;
import 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值