From d39150c368e9d8303f22127bb71c2058c2661df4 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sun, 24 Oct 2021 16:58:21 +0200 Subject: [PATCH] Android: Set android:hasFragileUserData This makes Android ask the user whether they want to delete user data when uninstalling the app instead of always deleting user data, which is pretty great now that we're forced to use scoped storage. It only works on Android 10 and up, though. --- Source/Android/app/src/main/AndroidManifest.xml | 3 ++- .../dolphinemu/activities/UserDataActivity.java | 16 +++++++++------- .../Android/app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Source/Android/app/src/main/AndroidManifest.xml b/Source/Android/app/src/main/AndroidManifest.xml index 15bd0ee7fc..5062741456 100644 --- a/Source/Android/app/src/main/AndroidManifest.xml +++ b/Source/Android/app/src/main/AndroidManifest.xml @@ -40,7 +40,8 @@ android:fullBackupContent="@xml/backup_rules" android:supportsRtl="true" android:isGame="true" - android:banner="@drawable/banner_tv"> + android:banner="@drawable/banner_tv" + android:hasFragileUserData="true"> diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.java index 532dcc8962..8c67505471 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.java @@ -37,17 +37,19 @@ public class UserDataActivity extends AppCompatActivity implements View.OnClickL TextView textAndroid11 = findViewById(R.id.text_android_11); Button buttonOpenSystemFileManager = findViewById(R.id.button_open_system_file_manager); - textType.setText(DirectoryInitialization.isUsingLegacyUserDirectory() ? - R.string.user_data_old_location : R.string.user_data_new_location); + boolean android_10 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q; + boolean android_11 = Build.VERSION.SDK_INT >= Build.VERSION_CODES.R; + boolean legacy = DirectoryInitialization.isUsingLegacyUserDirectory(); + + int user_data_new_location = android_10 ? + R.string.user_data_new_location_android_10 : R.string.user_data_new_location; + textType.setText(legacy ? R.string.user_data_old_location : user_data_new_location); textPath.setText(DirectoryInitialization.getUserDirectory()); - boolean show_android_11_text = Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && - !DirectoryInitialization.isUsingLegacyUserDirectory(); - textAndroid11.setVisibility(show_android_11_text ? View.VISIBLE : View.GONE); + textAndroid11.setVisibility(android_11 && !legacy ? View.VISIBLE : View.GONE); - boolean show_file_manager_button = Build.VERSION.SDK_INT >= Build.VERSION_CODES.R; - buttonOpenSystemFileManager.setVisibility(show_file_manager_button ? View.VISIBLE : View.GONE); + buttonOpenSystemFileManager.setVisibility(android_11 ? View.VISIBLE : View.GONE); buttonOpenSystemFileManager.setOnClickListener(this); } diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index a0b9d2fcd6..10edec446a 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -358,6 +358,8 @@ User Data Your user data is stored in a location which will not be deleted when you uninstall the app: Your user data is stored in a location which will be deleted when you uninstall the app: + + Your user data is stored in a location which by default will be deleted when you uninstall the app: Because you\'re using Android 11 or newer, not all file manager apps can access this location. However, you can access it using the system file manager (if present on your device), or by connecting your device to a PC. Open System File Manager Sorry, Dolphin couldn\'t find the system file manager on your device.