我是移动开发的新手。我正在尝试创建一个具有交叉淡出效果的应用程序。但是我需要在打开后没有点击按钮的情况下读取文件。你能帮我解决这个问题吗?这是我的代码。请在添加之后告诉我"READ_EXTERNAL_STORAGE“,我可以读取手机中的所有文件吗?知道这一点很重要,因为我想在我的手机中找到mp3文件并设置它们,而不是按键
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()
}发布于 2021-10-06 22:31:13
不是的。你永远无法读取你手机上的所有文件--每个应用程序都有自己的私人存储空间,除非他们允许,否则其他人无法读取他们的文件。无视这一点-不。在Android11之前还没有。请参阅https://developer.android.com/about/versions/11/privacy/storage和https://developer.android.com/training/data-storage/manage-all-files
https://stackoverflow.com/questions/69473300
复制相似问题