首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android内部存储读取数据权限

Android内部存储读取数据权限
EN

Stack Overflow用户
提问于 2021-10-06 22:20:26
回答 1查看 41关注 0票数 0

我是移动开发的新手。我正在尝试创建一个具有交叉淡出效果的应用程序。但是我需要在打开后没有点击按钮的情况下读取文件。你能帮我解决这个问题吗?这是我的代码。请在添加之后告诉我"READ_EXTERNAL_STORAGE“,我可以读取手机中的所有文件吗?知道这一点很重要,因为我想在我的手机中找到mp3文件并设置它们,而不是按键

代码语言:javascript
复制
package com.example.crossfade

import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.example.crossfade.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity()  {
    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    binding.buttonOneTrack.setOnClickListener {
        if (ContextCompat.checkSelfPermission(
                this, android.Manifest.permission.READ_EXTERNAL_STORAGE) ==
            PackageManager.PERMISSION_GRANTED) {
                onStoragePermissionGranted()
        } else {
            ActivityCompat.requestPermissions(
                this, arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE),
                RQ_PERMISSION_FOR_BUTTON_1
            )
        }
    }
    binding.buttonTwoTrack.setOnClickListener {

    }
}
    @RequiresApi(Build.VERSION_CODES.M)
    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        when (requestCode) {
            RQ_PERMISSION_FOR_BUTTON_1 -> {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    onStoragePermissionGranted()
                } else {
                    if (!shouldShowRequestPermissionRationale(android.Manifest.permission.READ_EXTERNAL_STORAGE)) {
                         askUserForOpeningSettings()
                    } else {
                        Toast.makeText(this, "Спасибо, мы можем продолжать", Toast.LENGTH_SHORT).show()
                    }
                }
        }
    }
}

private fun askUserForOpeningSettings() {
    val appSettingsIntent = Intent(
        Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
        Uri.fromParts("package", packageName, null)
    )
    if (packageManager.resolveActivity(appSettingsIntent, PackageManager.MATCH_DEFAULT_ONLY) == null) {
        Toast.makeText(this, "Ура! Ну наконец-то!", Toast.LENGTH_SHORT).show()
    }    else {
        AlertDialog.Builder(this)
            .setTitle("Нужно разрешение")
            .setMessage("Надо зайти в настройки и включить. Подробно лень писать")
            .setPositiveButton("Open") {_, _ ->
                startActivity(appSettingsIntent)
            }
            .create()
            .show()
    }
}

private companion object {
    const val RQ_PERMISSION_FOR_BUTTON_1 = 1
    const val RQ_PERMISSION_FOR_BUTTON_2 = 2
    }
private fun onStoragePermissionGranted() {
    Toast.makeText(this,"Спасибо, мы можем продолжать!", Toast.LENGTH_SHORT).show()
}
EN

回答 1

Stack Overflow用户

发布于 2021-10-06 22:31:13

不是的。你永远无法读取你手机上的所有文件--每个应用程序都有自己的私人存储空间,除非他们允许,否则其他人无法读取他们的文件。无视这一点-不。在Android11之前还没有。请参阅https://developer.android.com/about/versions/11/privacy/storagehttps://developer.android.com/training/data-storage/manage-all-files

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69473300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档