I have the following register initialized in onCreate method of an AppCompatActivity class:
ActivityResultLauncher<String> requestPermissionLauncher =
registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
if (!isGranted) {
Toasty.error(context, "Can't continue without the required permissions", Toast.LENGTH_LONG).show();
}
});
then when a button is clicked the following code checks for the permission:
if (ActivityCompat.checkSelfPermission(context,
Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
requestPermissionLauncher.launch(Manifest.permission.READ_EXTERNAL_STORAGE);
return;
}
However, the Request for permission - the Pop-up dialog is not showing and I am getting a Toast notification as above as permission is found not granted.
The app is running on a physical device with Android 14. I have checked the permission flag of my device using "adb shell dumpsys package MY_PACAKGE_NAME" command and have got the flags as -
android.permission.READ_EXTERNAL_STORAGE: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED|RESTRICTION_INSTALLER_EXEMPT]
The above indicates - the required permission request has not been denied multiple times due to which the pop-up dialog might not show anymore. The flags "USER_SET | USER_FIXED" is not found which means similar to "don't ask again" as mentioned in this google developer documentation link.
Both my app manifest and the merged manifest has the following -
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
My build.gradle file has the following -
minSdkVersion 28
targetSdkVersion 34
I have tried with clear all data, then complete uninstalling of the app and reinstalling the app with no results.
The pop-up is showing on Emulator running with Android 12L.
I have tried enabling all the permissions required from the "App Info > App permissions" - still my app fails to read external storage i.e. all the images from the external media bucket (from other shared folders - from other apps like facebook, whatsapp, download folder etc. Only DCIM camera folder pictures are being read by my app).
The pop-up is showing on Emulator running with Android 12L.
READ_EXTERNAL_STORAGE
does not exist on Android 13 and higher.
from other shared folders - from other apps like facebook, whatsapp, download folder etc.
You do not have filesystem access to arbitrary files placed on external storage by arbitrary apps. Most apps should use the Storage Access Framework (e.g., ActivityResultContracts.OpenDocument
). File managers can request the MANAGE_EXTERNAL_STORAGE
permission, which the user must grant manually and requires Play Store approval.