Skip to content

Commit

Permalink
Tempoorary fix access the request for Android 13 tiramisu
Browse files Browse the repository at this point in the history
  • Loading branch information
a-pavlov committed Sep 3, 2023
1 parent c27cc2b commit bea56b0
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 31 deletions.
4 changes: 2 additions & 2 deletions android/jdonkey/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
xmlns:tools="http://schemas.android.com/tools"
package="org.dkf.jmule"
android:installLocation="auto"
android:versionCode="36"
android:versionName="36">
android:versionCode="37"
android:versionName="37">

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,17 +90,20 @@ public void requestPermissions() {
}
Activity activity = activityRef.get();
String[] permissions = null;
switch (requestCode) {
case EXTERNAL_STORAGE_PERMISSIONS_REQUEST_CODE:
if (SystemUtils.hasAndroid10OrNewer()) {
permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE};
} else {
permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
}
break;
case ACCESS_COARSE_LOCATION_PERMISSIONS_REQUEST_CODE:
permissions = new String[]{Manifest.permission.ACCESS_COARSE_LOCATION};
break;
if (requestCode == EXTERNAL_STORAGE_PERMISSIONS_REQUEST_CODE) {
if (SystemUtils.hasAndroid13OrNewer()) {
// As of Android13 the geniuses at Android decided yet another change
// on how to ask for permissions, now we have to be more granular about it
permissions = new String[]{Manifest.permission.READ_MEDIA_VIDEO, Manifest.permission.READ_MEDIA_AUDIO, Manifest.permission.READ_MEDIA_IMAGES};
} else if (SystemUtils.hasAndroid11OrNewer()) {
// no more need for WRITE_EXTERNAL_STORAGE permission on Android 11,
// android:requestLegacyExternalStorage does nothing for android11 and up
// and it's ok because they finally let you use File API on the public downloads folders
permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE};
} else {
// Android 10 (29) + android:requestLegacyExternalStorage should make it work
permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
}
}

if (permissions != null) {
Expand All @@ -110,14 +113,8 @@ public void requestPermissions() {

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case EXTERNAL_STORAGE_PERMISSIONS_REQUEST_CODE:
onExternalStoragePermissionsResult(permissions, grantResults);
break;
case ACCESS_COARSE_LOCATION_PERMISSIONS_REQUEST_CODE:
onAccessCoarseLocationPermissionsResult(permissions, grantResults);
default:
break;
if (requestCode == EXTERNAL_STORAGE_PERMISSIONS_REQUEST_CODE) {
onExternalStoragePermissionsResult(permissions, grantResults);
}
}

Expand Down Expand Up @@ -207,16 +204,6 @@ private boolean onExternalStoragePermissionsResult(String[] permissions, int[] g
return true;
}

private boolean onAccessCoarseLocationPermissionsResult(String[] permissions, int[] grantResults) {
for (int i = 0; i < permissions.length; i++) {
if (permissions[i].equals(Manifest.permission.ACCESS_COARSE_LOCATION)) {
log.info("ACCESS_COARSE_LOCATION permission granted? " + (grantResults[i] == PackageManager.PERMISSION_GRANTED));
return grantResults[i] == PackageManager.PERMISSION_GRANTED;
}
}
return false;
}

private void shutdownMule() {
if (!Ref.alive(activityRef)) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public final class SystemUtils {
private static final int VERSION_SDK_ANDROID_10_Q = 29;
private static final int VERSION_SDK_ANDROID_11_R = 30;
private static final int VERSION_SDK_ANDROID_12_S = 31;
private static final int VERSION_SDK_ANDROID_13_TIRAMISU = 33;

private SystemUtils() {
}
Expand Down Expand Up @@ -216,6 +217,8 @@ public static boolean hasAndroid11OrNewer() {
return hasSdkOrNewer(VERSION_SDK_ANDROID_11_R);
}

public static boolean hasAndroid13OrNewer() { return hasSdkOrNewer(VERSION_SDK_ANDROID_13_TIRAMISU); }

/**
* Used to determine if the device is running
* KitKat (Android 4.4) or greater
Expand Down

0 comments on commit bea56b0

Please sign in to comment.