打开应用程序时不显示 Android 权限弹出窗口

问题描述 投票:0回答:1

我正在尝试创建一个音乐应用程序。此应用程序需要写入外部存储权限。我有 android 13 Api 33。我在清单文件和 main.xml 文件中添加了使用权限,如下所示,

在清单 XML 中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

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

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:requestLegacyExternalStorage="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MusicPlayer"
        tools:targetApi="31">
        <activity
            android:name=".PlayList"
            android:exported="false" />
        <activity
            android:name=".Player"
            android:exported="false" />
        <activity
            android:name=".FavouriteActivity"
            android:exported="false" />
        <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>

</manifest>
in may Main.XMl file

`类 MainActivity : AppCompatActivity() { 私有 Lateinit var 绑定:ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    requestRunTimePermission()

    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    openMainActivity()

}
fun openMainActivity(){
    binding.shuffleBtn.setOnClickListener {
        startActivity(Intent(this@MainActivity,Player::class.java))
    }
    binding.favouriteBtn.setOnClickListener {
        startActivity(Intent(this@MainActivity,FavouriteActivity::class.java))
    }
    binding.playListBtn.setOnClickListener {
        startActivity(Intent(this@MainActivity,PlayList::class.java))
    }
}



private fun requestRunTimePermission():Boolean{
    if (ActivityCompat.checkSelfPermission(this,android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE),13)
        return false
    }
    return true

}

override fun onRequestPermissionsResult(requestCode: Int,permissions: Array<out String>,grantResults: IntArray) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    if (requestCode == 13){
        if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED){
            Toast.makeText(this, "Permisiion granted", Toast.LENGTH_SHORT).show()
        }else{
            ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE),13)
        }
    }
}

}`

上面的代码没有向我的应用程序添加权限。

我在我的应用程序上尝试了上面的代码。打开应用程序时不会显示权限弹出窗口。

android kotlin android-studio android-permissions
1个回答
0
投票

如果您的应用程序的目标是 API 级别 33,那么您将无法使用不会被授予的外部存储权限。相反,请使用以下权限。

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />

© www.soinside.com 2019 - 2024. All rights reserved.