当前位置:   article > 正文

Android 文件管理权限适配_android 13 申请允许管理所有文件权限

android 13 申请允许管理所有文件权限

Android 文件管理权限适配

1. Manifest配置

相关代码:

	<!--Android 6-10 权限适配-->
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!--Android 10以上 权限适配-->
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:requestLegacyExternalStorage="true" 
        android:supportsRtl="true"
        android:theme="@style/Theme.AndroidProGuard"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
	 </application>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

2. MainActivity请求权限

// 工具类配置
Utils.init(this)

// 请求权限
private fun requestFilePermission() {
        when {
            Build.VERSION.SDK_INT >= Build.VERSION_CODES.R -> {// Android 10以上
                if (!Environment.isExternalStorageManager()) {
                    AlertDialog.Builder(this)
                        .setTitle("提示")
                        .setMessage("开启文件访问权限!")
                        .setNegativeButton(
                            "取消"
                        ) { dialog, _ ->
                            dialog.dismiss()
                        }
                        .setPositiveButton("前往") { dialog, _ ->
                            dialog.dismiss()
                            startActivity(Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION))
                        }.create().show()

                }
            }
            Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> {// Android 6以上
                if (!PermissionUtils.isGranted(
                        Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.READ_EXTERNAL_STORAGE
                    )
                ) {
                    PermissionUtils.permission(
                        Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.READ_EXTERNAL_STORAGE
                    ).callback { isAllGranted, _, _, _ ->
                        if (!isAllGranted) {
                            ToastUtils.showShort("没有开启文件权限")
                        }
                    }.request()
                }
            }
            else -> {}
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

PermissionUtils的工具类导入

implementation "com.blankj:utilcodex:1.30.0"
  • 1

3. 获取手机内在根目录

	// 获取根目录
    private fun getExternalStorageDirectory(): String? {
        val extFileStatus = Environment.getExternalStorageState()
        val extFile = Environment.getExternalStorageDirectory()
        // 判断是否处于挂载状态
        if (extFileStatus == Environment.MEDIA_MOUNTED && extFile.exists() && extFile.isDirectory
            && extFile.canWrite()
        ) {
            return extFile.absolutePath
        }
        return null
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/465981
推荐阅读
相关标签
  

闽ICP备14008679号