Tenho um aplicativo de tocador de música (que só eu uso, não está no Google Play e nunca estará) com as seguintes permissões do Manifest:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
O dispositivo informa que o aplicativo também tem a permissão ALL_FILES_ACCESS concedida (eu quero assim).
Ainda assim, o aplicativo informa que não tem permissão WRITE_EXTERNAL_STORAGE quando tento o requestPermissions
.
No entanto, não há permissão nas configurações do aplicativo em relação ao armazenamento, e ele diz No permissions denied
.
Eu tentei forçar adb shell
assim:
appops set --uid myApp.xvfmusic WRITE_EXTERNAL_STORAGE allow
e o aplicativo continua pedindo permissões...
Por que o recurso está me pedindo para definir WRITE_EXTERNAL_STORAGE e por que não há essa permissão para definir na configuração do aplicativo?
Parece que seu dispositivo está executando o Android 13+ e é por isso que você não pode solicitar "WRITE_EXTERNAL_STORAGE"
MANAGE_EXTERNAL_STORAGE substitui WRITE_EXTERNAL_STORAGE e permite amplo acesso ao armazenamento externo. Você não precisa de WRITE_EXTERNAL_STORAGE se já tiver a permissão MANAGE_EXTERNAL_STORAGE concedida.
Para publicar aplicativos com a permissão MANAGE_EXTERNAL_STORAGE, você precisará de uma justificativa clara para solicitá-la, caso contrário, o aplicativo será rejeitado. Como você não está publicando o aplicativo no Google Play, tudo bem. Mas aqueles que pensam que MANAGE_EXTERNAL_STORAGE é a alternativa para WRITE_EXTERNAL_STORAGE, estão errados. Se eles não puderem justificar claramente a necessidade de solicitar MANAGE_EXTERNAL_STORAGE (o que a maioria dos aplicativos não consegue), seus aplicativos serão rejeitados. A escolha deles deve ser o acesso ao armazenamento externo específico do aplicativo (Android/data/nome do pacote) ou os descritos na documentação acima