summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2021-05-09 15:23:11 +0200
committerJosJuice <josjuice@gmail.com>2021-09-16 20:12:20 +0200
commit9c8bb24293820c9be973e085511e24808b9bf707 (patch)
tree7f0d64a180c154edcc7ddf0f199dc3905f597f62 /Source/Android/app/src/main/java
parent258832dad463e12ef0d281454cc6cd9812e84d6e (diff)
Android: Add a "user data" screen
To make it clearer for users where Dolphin is storing user data, now that there's more than one possible place.
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.java45
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java3
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java11
3 files changed, 58 insertions, 1 deletions
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
new file mode 100644
index 0000000000..79fcc09123
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/UserDataActivity.java
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.activities;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import org.dolphinemu.dolphinemu.R;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
+
+public class UserDataActivity extends AppCompatActivity
+{
+ public static void launch(Context context)
+ {
+ Intent launcher = new Intent(context, UserDataActivity.class);
+ context.startActivity(launcher);
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.activity_user_data);
+
+ TextView textType = findViewById(R.id.text_type);
+ TextView textPath = findViewById(R.id.text_path);
+ TextView textAndroid11 = findViewById(R.id.text_android_11);
+
+ textType.setText(DirectoryInitialization.isUsingLegacyUserDirectory() ?
+ R.string.user_data_old_location : R.string.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);
+ }
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index d91faa775e..c718bab15e 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -10,6 +10,7 @@ import android.text.TextUtils;
import org.dolphinemu.dolphinemu.DolphinApplication;
import org.dolphinemu.dolphinemu.NativeLibrary;
import org.dolphinemu.dolphinemu.R;
+import org.dolphinemu.dolphinemu.activities.UserDataActivity;
import org.dolphinemu.dolphinemu.features.settings.model.AbstractIntSetting;
import org.dolphinemu.dolphinemu.features.settings.model.AbstractStringSetting;
import org.dolphinemu.dolphinemu.features.settings.model.AdHocBooleanSetting;
@@ -252,6 +253,8 @@ public final class SettingsFragmentPresenter
sl.add(new SubmenuSetting(mContext, R.string.advanced_submenu, MenuTag.CONFIG_ADVANCED));
sl.add(new SubmenuSetting(mContext, R.string.log_submenu, MenuTag.CONFIG_LOG));
sl.add(new SubmenuSetting(mContext, R.string.debug_submenu, MenuTag.DEBUG));
+ sl.add(new RunRunnable(mContext, R.string.user_data_submenu, 0, 0, 0,
+ () -> UserDataActivity.launch(mContext)));
}
private void addGeneralSettings(ArrayList<SettingsItem> sl)
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
index c2f6d638df..48963052dc 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
@@ -43,6 +43,7 @@ public final class DirectoryInitialization
private static volatile boolean areDirectoriesAvailable = false;
private static String userPath;
private static AtomicBoolean isDolphinDirectoryInitializationRunning = new AtomicBoolean(false);
+ private static boolean isUsingLegacyUserDirectory = false;
public enum DirectoryInitializationState
{
@@ -108,7 +109,10 @@ public final class DirectoryInitialization
if (!Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
return false;
- File path = preferLegacyUserDirectory(context) && PermissionsHandler.hasWriteAccess(context) ?
+ isUsingLegacyUserDirectory =
+ preferLegacyUserDirectory(context) && PermissionsHandler.hasWriteAccess(context);
+
+ File path = isUsingLegacyUserDirectory ?
getLegacyUserDirectoryPath() : context.getExternalFilesDir(null);
if (path == null)
@@ -388,6 +392,11 @@ public final class DirectoryInitialization
isExternalFilesDirEmpty(context) && legacyUserDirectoryExists();
}
+ public static boolean isUsingLegacyUserDirectory()
+ {
+ return isUsingLegacyUserDirectory;
+ }
+
public static boolean isWaitingForWriteAccess(Context context)
{
// This first check is only for performance, not correctness