如何在android10中创建目录?

oknwwptz  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(326)

我曾经 Environment.getExternalStorageDirectory() 用于创建目录并将我的应用程序文件保存在其中。在android 8之前,我的应用程序可以正常工作,但在更高的级别上它不工作,我不能在主位置保存任何文件,我必须将其保存在../android/data/my_package_name中。我想这是因为安卓的新政策,但现在我看到有很多应用程序,可以使目录和保存在主存储文件,我真的很想保存在主存储文件请帮助我,如果三个是一个解决方案。
我补充说 android:requestLegacyExternalStorage="true" 并授予以下权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
q8l4jmvw

q8l4jmvw1#

它需要运行时权限。如果授予了权限,则below checkpermission()方法返回true,否则请求权限。用户是否授予了权限,将进入onrequestpermissionsresult()。

fun checkPermission(decider: Int): Boolean {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != 
   PackageManager.PERMISSION_GRANTED
            ) != PackageManager.PERMISSION_GRANTED || checkSelfPermission(
                Manifest.permission.READ_EXTERNAL_STORAGE
            ) != PackageManager.PERMISSION_GRANTED
        ) {
            ActivityCompat.requestPermissions(
                this,
                arrayOf(
                    Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.READ_EXTERNAL_STORAGE
                ),
                Constants.checkPermission.REQUESTPERMISSION
            )
            return false
        } else {
            return true
        }
    } else {
        return true
    }
}

override fun onRequestPermissionsResult(
    requestCode: Int,
    permissions: Array<out String>,
    grantResults: IntArray
) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    when (requestCode) {
        Constants.checkPermission.REQUESTPERMISSION -> {
            val writeExternalFile = grantResults[0] == 
PackageManager.PERMISSION_GRANTED
            val readExternalFile = grantResults[0] == 
PackageManager.PERMISSION_GRANTED

            if (readExternalFile && writeExternalFile) {
                Log.e("mesg", "permission granted")

            } else {
                Log.e("msg", "forceFullPermission")
            }
        }
    }
}

相关问题