Android所有版本的存储权限适配

这篇具有很好参考价值的文章主要介绍了Android所有版本的存储权限适配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

             第一步:在Manifest文件添加如下权限
         <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" tools:ignore="ScopedStorage"/>
             <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
         <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

         android:requestLegacyExternalStorage="true"
         第二步:定义以下常量
         private static final int REQUEST_CODE_FOR_READ_MEDIA_IMAGES_PERMISSION_FROM_ANDROID_13 = 0x00000003;
             private static final int REQUEST_CODE_FOR_WRITE_EXTERNAL_STORAGE_PERMISSION_FROM_ANDROID_10_TO_ANDROID_12 = 0x00000005;
             private static final int REQUEST_CODE_FOR_WRITE_EXTERNAL_STORAGE_PERMISSION_FOR_ANDROID_6_TO_ANDROID_9 = 0x00000006;
         第三步:在需要写入文件的地方编写以下代码
            java.io.OutputStream outputStream = null;
            java.lang.String errorMessage = "";
            java.lang.String fileName = "test_导出资料_" + java.lang.System.currentTimeMillis() + ".xls";
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
                android.util.Log.d("debug", "设备系统的版本号是大于等于安卓6.0以上的版本,需要检查运行时的危险权限");
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
                    android.util.Log.d("debug", "设备系统的版本号是大于等于安卓10.0以上的版本,说明是只能用媒介存储写入文件和读取文件");
                    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
                        android.util.Log.d("debug", "设备系统的版本号是大于等于安卓13.0以上的版本,换成检查Media声音和Media视频和Media图片的权限");
                        int checkSelfPermissionResultForReadMediaImages = checkSelfPermission(android.Manifest.permission.READ_MEDIA_IMAGES);
                        android.util.Log.d("debug", "checkSelfPermissionResultForReadMediaImages->" + checkSelfPermissionResultForReadMediaImages);
                        if (checkSelfPermissionResultForReadMediaImages == android.content.pm.PackageManager.PERMISSION_GRANTED) {
                            android.util.Log.d("debug", "已经授予媒介图片的读取权限");
                            android.net.Uri uri = android.provider.MediaStore.Files.getContentUri("external");
                            android.content.ContentValues contentValues = new android.content.ContentValues();
                            contentValues.put(android.provider.MediaStore.MediaColumns.DISPLAY_NAME, fileName);
                            contentValues.put(android.provider.MediaStore.MediaColumns.MIME_TYPE, "application/x-xls");
                            android.content.ContentResolver contentResolver = getContentResolver();
                            android.net.Uri uriForInsertResult = contentResolver.insert(uri, contentValues);
                            try {
                                outputStream = contentResolver.openOutputStream(uriForInsertResult);
                            } catch (java.io.IOException ioException) {
                                ioException.printStackTrace();
                                errorMessage = ioException.getMessage();
                            }
                        } else {
                            errorMessage = "需要授予权限";
                            android.util.Log.d("debug", "没有授予媒介图片的读取权限");
                            android.util.Log.d("debug", "现在执行请求读取媒介图片的权限");
                            java.lang.String[] permission = new java.lang.String[1];
                            permission[0] = android.Manifest.permission.READ_MEDIA_IMAGES;
                            requestPermissions(permission, REQUEST_CODE_FOR_READ_MEDIA_IMAGES_PERMISSION_FROM_ANDROID_13);
                        }
                        int checkSelfPermissionResultForReadExternalStorage = checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE);
                        int checkSelfPermissionResultForWriteExternalStorage = checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
                        android.util.Log.d("debug", "检测完读取媒介图片权限之后再检测外部存储读取权限看看->" + checkSelfPermissionResultForReadExternalStorage);
                        android.util.Log.d("debug", "检测完读取媒介图片权限之后再检测外部存储写入权限看看->" + checkSelfPermissionResultForWriteExternalStorage);
                    } else {
                        android.util.Log.d("debug", "设备系统的版本号时介于10.0到12.0之间的,通过android.provider.MediaStore获取外部存储目录");
                        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
                            android.util.Log.d("debug", "安卓11或者安卓12通过Environment的isExternalStorageManager方法检查是否有权限");
                            if (android.os.Environment.isExternalStorageManager()) {
                                android.util.Log.d("debug", "在安卓11或者安卓12中有读写文件的权限");
                                android.net.Uri uri = android.provider.MediaStore.Files.getContentUri("external");
                                android.content.ContentValues contentValues = new android.content.ContentValues();
                                contentValues.put(android.provider.MediaStore.MediaColumns.DISPLAY_NAME, fileName);
                                contentValues.put(android.provider.MediaStore.MediaColumns.MIME_TYPE, "application/x-xls");
                                android.content.ContentResolver contentResolver = getContentResolver();
                                android.net.Uri uriForInsertResult = contentResolver.insert(uri, contentValues);
                                try {
                                    outputStream = contentResolver.openOutputStream(uriForInsertResult);
                                } catch (java.io.IOException ioException) {
                                    ioException.printStackTrace();
                                    errorMessage = ioException.getMessage();
                                }
                            } else {
                                errorMessage = "需要授予权限";
                                android.util.Log.d("debug", "安卓11或者安卓12的逻辑请求权限");
                                try {
                                    Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
                                    intent.addCategory("android.intent.category.DEFAULT");
                                    intent.setData(android.net.Uri.parse(String.format("package:%s",getApplicationContext().getPackageName())));
                                    startActivityForResult(intent, REQUEST_CODE_FOR_WRITE_EXTERNAL_STORAGE_PERMISSION_FROM_ANDROID_10_TO_ANDROID_12);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                    Intent intent = new Intent();
                                    intent.setAction(android.provider.Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
                                    startActivityForResult(intent, REQUEST_CODE_FOR_WRITE_EXTERNAL_STORAGE_PERMISSION_FROM_ANDROID_10_TO_ANDROID_12);
                                }
                            }
                        } else {
                            android.util.Log.d("debug", "在安卓10版本中沿用之前的检查方法");
                            int checkSelfPermissionResultForReadExternalStorage = androidx.core.app.ActivityCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE);
                            //int checkSelfPermissionResultForWriteExternalStorage = androidx.core.app.ActivityCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
                            android.util.Log.d("debug", "checkSelfPermissionResultForReadExternalStorage->" + checkSelfPermissionResultForReadExternalStorage);
                            //android.util.Log.d("debug", "checkSelfPermissionResultForWriteExternalStorage->" + checkSelfPermissionResultForWriteExternalStorage);
                            //boolean isHavePermission = checkSelfPermissionResultForReadExternalStorage == android.content.pm.PackageManager.PERMISSION_GRANTED && checkSelfPermissionResultForWriteExternalStorage == android.content.pm.PackageManager.PERMISSION_GRANTED;
                            if (checkSelfPermissionResultForReadExternalStorage == android.content.pm.PackageManager.PERMISSION_GRANTED) {
                                android.util.Log.d("debug", "已经授予外部存储写入权限");
                                android.net.Uri uri = android.provider.MediaStore.Files.getContentUri("external");
                                android.content.ContentValues contentValues = new android.content.ContentValues();
                                contentValues.put(android.provider.MediaStore.MediaColumns.DISPLAY_NAME, fileName);
                                contentValues.put(android.provider.MediaStore.MediaColumns.MIME_TYPE, "application/x-xls");
                                android.content.ContentResolver contentResolver = getContentResolver();
                                android.net.Uri uriForInsertResult = contentResolver.insert(uri, contentValues);
                                try {
                                    outputStream = contentResolver.openOutputStream(uriForInsertResult);
                                } catch (java.io.IOException ioException) {
                                    ioException.printStackTrace();
                                    errorMessage = ioException.getMessage();
                                }
                            } else {
                                errorMessage = "需要授予权限";
                                android.util.Log.d("debug", "没有授予外部存储写入权限");
                                android.util.Log.d("debug", "现在执行请求外部存储写入的权限");
                                android.util.Log.d("debug", "安卓10的逻辑请求权限");
                                java.lang.String[] permission = new java.lang.String[2];
                                permission[0] = android.Manifest.permission.READ_EXTERNAL_STORAGE;
                                permission[1] = android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
                                requestPermissions(permission, REQUEST_CODE_FOR_WRITE_EXTERNAL_STORAGE_PERMISSION_FROM_ANDROID_10_TO_ANDROID_12);
                            }
                        }
                    }
                } else {
                    android.util.Log.d("debug", "设备系统的版本号是介于6.0到9.0之间,仍然是可以从Environment类的getExternalStorageDirectory方法获取外部存储目录的,但是前提是要检查运行时权限");
                    int checkSelfPermissionResultForWriteExternalStorage = checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
                    if (checkSelfPermissionResultForWriteExternalStorage == android.content.pm.PackageManager.PERMISSION_GRANTED) {
                        java.io.File externalStorageDirectory = android.os.Environment.getExternalStorageDirectory();
                        android.util.Log.d("debug", "安卓系统是在6.0到9.0之间的,通过Environment类获取到外部存储目录->" + externalStorageDirectory.getPath());
                        try {
                            outputStream = new java.io.FileOutputStream(externalStorageDirectory.getPath() + java.io.File.separator + fileName);
                        } catch (java.io.IOException ioException) {
                            ioException.printStackTrace();
                            errorMessage = ioException.getMessage();
                        }
                    } else {
                        errorMessage = "需要授予权限";
                        java.lang.String[] permission = new java.lang.String[1];
                        permission[0] = android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
                        requestPermissions(permission, REQUEST_CODE_FOR_WRITE_EXTERNAL_STORAGE_PERMISSION_FOR_ANDROID_6_TO_ANDROID_9);
                    }
                }
            } else {
                android.util.Log.d("debug", "设备系统的版本号小于6.0以下的版本,不需要检查运行时权限");
                java.io.File externalStorageDirectory = android.os.Environment.getExternalStorageDirectory();
                android.util.Log.d("debug", "直接通过Environment类的getExternalStorageDirectory()即可获取外部存储目录->" + externalStorageDirectory.getPath());
                try {
                    outputStream = new java.io.FileOutputStream(externalStorageDirectory.getPath() + java.io.File.separator + fileName);
                } catch (java.io.IOException ioException) {
                    ioException.printStackTrace();
                    errorMessage = ioException.getMessage();
                }
            }
            if (outputStream != null) {
                //file write
            } else {
                android.widget.Toast.makeText(this, errorMessage, android.widget.Toast.LENGTH_LONG).show();
            }


        第四步:权限请求回调函数
        @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == REQUEST_CODE_FOR_READ_MEDIA_IMAGES_PERMISSION_FROM_ANDROID_13) {
            if (grantResults.length > 0 && grantResults[0] == android.content.pm.PackageManager.PERMISSION_GRANTED) {
                if (permissions.length > 0) {
                    android.util.Log.d("debug", "打印授予的权限->" + permissions[0]);
                }
                java.lang.String fileName = "buyup_导出资料_" + java.lang.System.currentTimeMillis() + ".xls";
                java.lang.String errorMessage = "";
                java.io.OutputStream outputStream = null;
                android.util.Log.d("debug", "设备系统的版本号是大于等于安卓10.0以上的版本,说明是只能用媒介存储写入文件和读取文件");
                android.net.Uri uri = android.provider.MediaStore.Files.getContentUri("external");
                android.content.ContentValues contentValues = new android.content.ContentValues();
                contentValues.put(android.provider.MediaStore.MediaColumns.DISPLAY_NAME, fileName);
                contentValues.put(android.provider.MediaStore.MediaColumns.MIME_TYPE, "application/x-xls");
                android.content.ContentResolver contentResolver = getContentResolver();
                android.net.Uri uriForInsertResult = contentResolver.insert(uri, contentValues);
                try {
                    outputStream = contentResolver.openOutputStream(uriForInsertResult);
                } catch (java.io.IOException ioException) {
                    ioException.printStackTrace();
                    errorMessage = ioException.getMessage();
                }
                if (outputStream != null) {
                    //file write
                } else {
                    android.widget.Toast.makeText(this, errorMessage, android.widget.Toast.LENGTH_LONG).show();
                }
            } else {
                if (permissions.length > 0) {
                    java.lang.String permission0 = permissions[0];
                    android.util.Log.d("debug", "打印请求的权限->" + permission0);
                }
                android.util.Log.d("debug", "权限授予失败");
                android.widget.Toast.makeText(this, "权限授予失败", android.widget.Toast.LENGTH_LONG).show();
            }
        } else if (requestCode == REQUEST_CODE_FOR_WRITE_EXTERNAL_STORAGE_PERMISSION_FOR_ANDROID_6_TO_ANDROID_9) {
            if (grantResults.length > 0 && grantResults[0] == android.content.pm.PackageManager.PERMISSION_GRANTED) {
                if (permissions.length > 0) {
                    android.util.Log.d("debug", "来自安卓6.0到安卓9.9之间的请求权限,打印授予的权限->" + permissions[0]);
                }
                java.lang.String fileName = "buyup_导出资料_" + java.lang.System.currentTimeMillis() + ".xls";
                java.lang.String errorMessage = "";
                java.io.OutputStream outputStream = null;
                android.util.Log.d("debug", "设备系统的版本号是大于等于安卓6.0到安卓9.0之间的,通过用android.os.Environment类获取外部存储");
                java.io.File externalStorageDirectory = android.os.Environment.getExternalStorageDirectory();
                try {
                    outputStream = new java.io.FileOutputStream(externalStorageDirectory.getPath() + java.io.File.separator + fileName);
                } catch (java.io.IOException ioException) {
                    ioException.printStackTrace();
                    errorMessage = ioException.getMessage();
                }
                if (outputStream != null) {
                    //file write
                } else {
                    android.widget.Toast.makeText(this, errorMessage, android.widget.Toast.LENGTH_LONG).show();
                }
            } else {
                if (permissions.length > 0) {
                    android.util.Log.d("debug", "来自安卓6.0到安卓9.9之间的请求权限,打印拒绝的权限->" + permissions[0]);
                }
                android.util.Log.d("debug", "来自安卓6.0到安卓9.9之间的请求权限,权限授予失败");
                android.widget.Toast.makeText(this, "权限授予失败", android.widget.Toast.LENGTH_LONG).show();
            }
        } else if (requestCode == REQUEST_CODE_FOR_WRITE_EXTERNAL_STORAGE_PERMISSION_FROM_ANDROID_10_TO_ANDROID_12) {
            if (grantResults.length > 0 && grantResults[0] == android.content.pm.PackageManager.PERMISSION_GRANTED) {
                if (permissions.length > 0) {
                    android.util.Log.d("debug", "来自安卓10.0的版本,打印授予的权限->" + permissions[0]);
                    android.util.Log.d("debug", "来自安卓10.0的版本,打印授予的权限->" + permissions[1]);
                }
                java.lang.String fileName = "buyup_导出资料_" + java.lang.System.currentTimeMillis() + ".xls";
                java.lang.String errorMessage = "";
                java.io.OutputStream outputStream = null;
                android.net.Uri uri = android.provider.MediaStore.Files.getContentUri("external");
                android.content.ContentValues contentValues = new android.content.ContentValues();
                contentValues.put(android.provider.MediaStore.MediaColumns.DISPLAY_NAME, fileName);
                contentValues.put(android.provider.MediaStore.MediaColumns.MIME_TYPE, "application/x-xls");
                android.content.ContentResolver contentResolver = getContentResolver();
                android.net.Uri uriForInsertResult = contentResolver.insert(uri, contentValues);
                try {
                    outputStream = contentResolver.openOutputStream(uriForInsertResult);
                } catch (java.io.IOException ioException) {
                    ioException.printStackTrace();
                    errorMessage = ioException.getMessage();
                }
                if (outputStream != null) {
                    //file write
                } else {
                    android.widget.Toast.makeText(this, errorMessage, android.widget.Toast.LENGTH_LONG).show();
                }
            } else {
                if (permissions.length > 0) {
                    android.util.Log.d("debug", "来自安卓10.0的版本,打印拒绝的权限->" + permissions[0]);
                    android.util.Log.d("debug", "来自安卓10.0的版本,打印拒绝的权限->" + permissions[1]);
                }
                android.widget.Toast.makeText(this, "权限授予失败", android.widget.Toast.LENGTH_LONG).show();
            }
        }
    }


    第五步:针对安卓11或者安卓12版本的请求权限方法
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE_FOR_WRITE_EXTERNAL_STORAGE_PERMISSION_FROM_ANDROID_10_TO_ANDROID_12) {
            android.util.Log.d("debug", "在安卓11或者安卓12系统中引导到系统设置界面开启权限回来");
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
                if (android.os.Environment.isExternalStorageManager()) {
                    android.util.Log.d("debug", "已经授予外部存储写入权限");
                    java.io.OutputStream outputStream = null;
                    java.lang.String errorMessage = "";
                    java.lang.String fileName = "buyup_导出资料_" + java.lang.System.currentTimeMillis() + ".xls";
                    android.util.Log.d("debug", "设备系统的版本号时介于10.0到12.0之间的,通过android.provider.MediaStore获取外部存储目录");
                    android.net.Uri uri = android.provider.MediaStore.Files.getContentUri("external");
                    android.content.ContentValues contentValues = new android.content.ContentValues();
                    contentValues.put(android.provider.MediaStore.MediaColumns.DISPLAY_NAME, fileName);
                    contentValues.put(android.provider.MediaStore.MediaColumns.MIME_TYPE, "application/x-xls");
                    android.content.ContentResolver contentResolver = getContentResolver();
                    android.net.Uri uriForInsertResult = contentResolver.insert(uri, contentValues);
                    try {
                        outputStream = contentResolver.openOutputStream(uriForInsertResult);
                    } catch (java.io.IOException ioException) {
                        ioException.printStackTrace();
                        errorMessage = ioException.getMessage();
                    }
                    if (outputStream != null) {
                        //file write
                    } else {
                        android.widget.Toast.makeText(this, errorMessage, android.widget.Toast.LENGTH_LONG).show();
                    }
                } else {
                    android.widget.Toast.makeText(this, "需要授予权限才能导出文件!", android.widget.Toast.LENGTH_SHORT).show();
                }
            }
        }
    }文章来源地址https://www.toymoban.com/news/detail-796324.html

到了这里,关于Android所有版本的存储权限适配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android版本实现root权限(本办法适用于所有android平台)

    本方法适用于所有Android版本 userdebug和user版本 关闭selinux system/core 修改su.cpp,注释用户组权限检测 system/extras/su/su.cpp diff --git a/su/su.cpp b/su/su.cpp index 1a1ab6bf..af3d2a68 100644 --- a/su/su.cpp +++ b/su/su.cpp @@ -80,8 +80,8 @@ void extract_uidgids(const char* uidgids, uid_t* uid, gid_t* gid, gid_t* gids, i } int ma

    2024年02月06日
    浏览(29)
  • android studio开发——android11版本以上权限动态申请问题,包括文件读写、图片、相机的调用

    用于android手机的升级,现在已经是android13版本了,对于权限问题可能更加敏感了,前段时间开发发现之前的方法已经不再适用于android11以后的版本了 读写权限申请最好是跳转到设置中进行才是最好了,下面我们开始进行 首先是AndroidManifest.xml文件的权限 然后这里讲解一下权

    2024年02月10日
    浏览(47)
  • Android12中蓝牙权限适配

    AndroidManifest.xml 代码 说明: 必须按照这两步申请蓝牙权限, 首先 在androidManifest.xml中配置蓝牙权限,Android11及以下android.permission.BLUETOOTH、android.permission.BLUETOOTH_ADMIN申请这两个,Android12中蓝牙权限进行新增android.permission.BLUETOOTH_SCAN、android.permission.BLUETOOTH_ADVERTISE、android.permi

    2024年02月11日
    浏览(43)
  • 【Android 10 适配】隐私权限变更

    更详细内容请参考 Android 10 中的隐私权变更 Android 10(API 级别 29)引入了多项功能和行为变更,旨在更好地保护用户的隐私。这些变更让用户更清楚地了解并更好地控制自己的数据及为应用提供的权能。 下面是 Android 10 中与 隐私权限 相关的主要变更。 默认情况下,以 Andr

    2024年01月22日
    浏览(48)
  • android开发在android13中存储权限发生变化,READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE无法使用

    原来的两个存储权限在android13中已经无法使用 在android13中读取图片需要以下权限: 视频权限: 音频权限: 如果需要访问pdf,word等其他类型文件,请使用以下权限:

    2024年02月01日
    浏览(29)
  • android11 申请所有文件访问权限

    Android 11 引入了强制执行分区存储的限制,导致应用默认不能访问外部文件。 针对以前涉及较多文件的操作,可采用申请所有文件访问权限的方式来解决这一问题,实现方式如下。 (虽然这样做安全性低,官方并不推荐这样,但确实最快适配原有应用程序的方式) 1. Android

    2024年02月04日
    浏览(29)
  • Android 10-11适配外部存储方案

    Android Api 29 对文件和文件夹进行了重大更改。不允许使用外部存储,如下方法: Environment.getExternalStorageDirectory() = /mnt/sdcard   Environment.getExternalStoragePublicDirectory(“test”) = /mnt/sdcard/test 只能使用内部存储 getExternalFilesDir(“test”) = /mnt/sdcard/Android/data/com.my.app/files/test getExternalF

    2024年02月06日
    浏览(30)
  • Android低版本(4.4)okhttp 网络适配

    目录 访问网络时,出现错误: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb7eabc88: Failure in SSL library, usually a protocol error    error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version (external/openssl/ssl/s23_clnt.c:741 0xa4fb8d5c:0x00000000) SSLSocket的setEnabledProtocols配置支持TLSv1.1,

    2024年01月17日
    浏览(27)
  • Android Studio 所有历史版本下载

    本篇文章将给大家讲解如何下载Android Studio的过往历史版本,以及解决看到的历史版本不完整的问题。 打开历史版本的Android Studio官网下载地址:下载地址 点击我同意按钮 这时候就可以看到历史版本了 我们会发现这里的历史版本并不完整,这时我们切换一下语言为英文 切换

    2024年02月10日
    浏览(42)
  • Android将Uri转为路径字符串(适配安卓全版本)并使用第三方应用打开文件(适配Android7.0+)

    做这个功能时在网上找了无数篇例子,有些方法是有问题的,故自己写一篇完整实现的总结,作备忘也作案例。顺便说一句,Android对存储权限的给予真的越来越严格 目录 1.Uri转为路径String以获得文件名  2.获取文件后缀名 3.通过后缀名获取文件MIME类型  4.设置Intent的Uri与权限

    2024年02月19日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包