我是Android Studio的新手,只想为自己制作一个基本的应用程序,我无法在手机上请求任何权限,它只是自动拒绝。 我正在使用 Kotlin,但也尝试过 Java(因为我多年前学过 Java,但从未学过在 Android 上编写代码)。 我的手机是 OnePlus Nord 2t(如果这有什么区别的话),并且使用 API 33。我的项目的 SDK 最低为 API 30。
我已经确保 build.gradle minSDK 和 targetSdk 没问题,并将此行添加到 AndroidManifest.xml 中:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
// also tried to add tools:node="replace" and tools:remove="android:maxSdkVersion" because I saw people mentionning it
这是我现在的全部代码
package com.example.testpermissions
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.Manifest
import android.content.pm.PackageManager
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
class MainActivity : AppCompatActivity() {
private val READ_EXTERNAL_STORAGE_PERMISSION_CODE = 101
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Check if the permission is already granted
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.READ_EXTERNAL_STORAGE
) == PackageManager.PERMISSION_GRANTED
) {
// Permission is already granted.
Toast.makeText(this, "already ok", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "prompting", Toast.LENGTH_SHORT).show()
// Permission is not granted.
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
READ_EXTERNAL_STORAGE_PERMISSION_CODE
)
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == READ_EXTERNAL_STORAGE_PERMISSION_CODE) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission granted.
Toast.makeText(this, "ok", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "not ok", Toast.LENGTH_SHORT).show()
// Permission denied by the user.
}
}
}
}
如您所见,我使用 Toast 来查看哪些内容有效或无效,我所拥有的只是“提示”然后“不好”,之后应用程序继续正常运行。
提前感谢您的帮助。