mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 09:48:02 +00:00
request access if needed to use backup and restore
This commit is contained in:
@@ -253,9 +253,7 @@ public class Main extends AndroidApplication {
|
|||||||
text.setGravity(Gravity.LEFT);
|
text.setGravity(Gravity.LEFT);
|
||||||
text.setTypeface(Typeface.SERIF);
|
text.setTypeface(Typeface.SERIF);
|
||||||
String SP = "Storage Permission";
|
String SP = "Storage Permission";
|
||||||
if (needExternalFileAccess()) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
SP = "All File Access Permission";
|
|
||||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
|
||||||
SP = "Photos and Videos, Music and Audio Permissions";
|
SP = "Photos and Videos, Music and Audio Permissions";
|
||||||
} else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {
|
} else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {
|
||||||
SP = "Files & Media Permissions";
|
SP = "Files & Media Permissions";
|
||||||
@@ -267,11 +265,8 @@ public class Main extends AndroidApplication {
|
|||||||
" 2) Tap Permissions\n" +
|
" 2) Tap Permissions\n" +
|
||||||
" 3) Enable the " + SP + ".\n\n" +
|
" 3) Enable the " + SP + ".\n\n" +
|
||||||
"(You can tap anywhere to exit and restart the app)\n\n";
|
"(You can tap anywhere to exit and restart the app)\n\n";
|
||||||
String allFileAccessSteps = " 1) Tap \"App Settings\" Button.\n" +
|
|
||||||
" 2) Enable the " + SP + ".\n\n" +
|
|
||||||
"(You can tap anywhere to exit and restart the app)\n\n";
|
|
||||||
if (ex) {
|
if (ex) {
|
||||||
title = needExternalFileAccess() ? "All File Access Permission" : manageApp ? "Forge AutoUpdater Permission...\n" : "Forge didn't initialize!\n";
|
title = manageApp ? "Forge AutoUpdater Permission...\n" : "Forge didn't initialize!\n";
|
||||||
steps = manageApp ? " 1) Tap \"App Settings\" Button.\n" +
|
steps = manageApp ? " 1) Tap \"App Settings\" Button.\n" +
|
||||||
" 2) Enable \"Allow apps from this source\"\n" +
|
" 2) Enable \"Allow apps from this source\"\n" +
|
||||||
"(You can tap anywhere to exit and restart the app)\n\n" : msg + "\n\n";
|
"(You can tap anywhere to exit and restart the app)\n\n" : msg + "\n\n";
|
||||||
@@ -280,7 +275,7 @@ public class Main extends AndroidApplication {
|
|||||||
SpannableString ss1 = new SpannableString(title);
|
SpannableString ss1 = new SpannableString(title);
|
||||||
ss1.setSpan(new StyleSpan(Typeface.BOLD), 0, ss1.length(), 0);
|
ss1.setSpan(new StyleSpan(Typeface.BOLD), 0, ss1.length(), 0);
|
||||||
text.append(ss1);
|
text.append(ss1);
|
||||||
text.append(needExternalFileAccess() ? allFileAccessSteps : steps);
|
text.append(steps);
|
||||||
row.addView(text);
|
row.addView(text);
|
||||||
row.setGravity(Gravity.CENTER);
|
row.setGravity(Gravity.CENTER);
|
||||||
|
|
||||||
@@ -309,16 +304,7 @@ public class Main extends AndroidApplication {
|
|||||||
|
|
||||||
button.setTextColor(Color.RED);
|
button.setTextColor(Color.RED);
|
||||||
button.setOnClickListener(v -> {
|
button.setOnClickListener(v -> {
|
||||||
if (needExternalFileAccess()) {
|
if (manageApp) {
|
||||||
/*
|
|
||||||
This is needed for Android 11 and upwards to have access on external storage (direct file path)
|
|
||||||
ie adventure mode -> data -> restore. Though its not fast like the app-specific storage...
|
|
||||||
*/
|
|
||||||
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
|
|
||||||
Uri uri = Uri.fromParts("package", getPackageName(), null);
|
|
||||||
intent.setData(uri).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
startActivity(intent);
|
|
||||||
} else if (manageApp) {
|
|
||||||
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES)
|
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES)
|
||||||
.setData(Uri.parse(String.format("package:%s", getPackageName())))
|
.setData(Uri.parse(String.format("package:%s", getPackageName())))
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
@@ -354,7 +340,7 @@ public class Main extends AndroidApplication {
|
|||||||
public void onAnimationEnd(Animator animation) {
|
public void onAnimationEnd(Animator animation) {
|
||||||
super.onAnimationEnd(animation);
|
super.onAnimationEnd(animation);
|
||||||
handler.postDelayed(() -> {
|
handler.postDelayed(() -> {
|
||||||
if (needExternalFileAccess() || !permissiongranted || exception) {
|
if (!permissiongranted || exception) {
|
||||||
displayMessage(forgeLogo, adapter, exception, msg, false);
|
displayMessage(forgeLogo, adapter, exception, msg, false);
|
||||||
} else if (title.isEmpty() && steps.isEmpty()) {
|
} else if (title.isEmpty() && steps.isEmpty()) {
|
||||||
if (isLandscape) {
|
if (isLandscape) {
|
||||||
@@ -678,6 +664,21 @@ public class Main extends AndroidApplication {
|
|||||||
return new AndroidUpnpServiceConfiguration();
|
return new AndroidUpnpServiceConfiguration();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean needFileAccess() {
|
||||||
|
return needExternalFileAccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void requestFileAcces() {
|
||||||
|
/* This is needed for Android 11 and upwards to have access on external storage (direct file path)
|
||||||
|
ie adventure mode -> data -> restore. Though it's not fast like the app-specific storage...*/
|
||||||
|
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
|
||||||
|
Uri uri = Uri.fromParts("package", getPackageName(), null);
|
||||||
|
intent.setData(uri).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isConnectedToInternet() {
|
public boolean isConnectedToInternet() {
|
||||||
//if it can't determine Internet connection within two seconds, assume not connected
|
//if it can't determine Internet connection within two seconds, assume not connected
|
||||||
|
|||||||
@@ -145,5 +145,15 @@ public class Main extends IOSApplication.Delegate {
|
|||||||
// not used
|
// not used
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean needFileAccess() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void requestFileAcces() {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -153,5 +153,15 @@ public class Main {
|
|||||||
// shouldn't be reached
|
// shouldn't be reached
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean needFileAccess() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void requestFileAcces() {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,6 +126,10 @@ public class StartScene extends UIScene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean backup() {
|
public boolean backup() {
|
||||||
|
if (Forge.getDeviceAdapter().needFileAccess()) {
|
||||||
|
Forge.getDeviceAdapter().requestFileAcces();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (backupDialog == null) {
|
if (backupDialog == null) {
|
||||||
backupDialog = createGenericDialog(Forge.getLocalizer().getMessage("lblData"),
|
backupDialog = createGenericDialog(Forge.getLocalizer().getMessage("lblData"),
|
||||||
null, Forge.getLocalizer().getMessage("lblBackup"),
|
null, Forge.getLocalizer().getMessage("lblBackup"),
|
||||||
|
|||||||
@@ -57,6 +57,10 @@ public class FilesPage extends TabPage<SettingsScreen> {
|
|||||||
lstItems.addItem(new Extra(Forge.getLocalizer().getMessage("lblBackupRestore"), Forge.getLocalizer().getMessage("lblBackupRestoreDescription")) {
|
lstItems.addItem(new Extra(Forge.getLocalizer().getMessage("lblBackupRestore"), Forge.getLocalizer().getMessage("lblBackupRestoreDescription")) {
|
||||||
@Override
|
@Override
|
||||||
public void select() {
|
public void select() {
|
||||||
|
if (Forge.getDeviceAdapter().needFileAccess()) {
|
||||||
|
Forge.getDeviceAdapter().requestFileAcces();
|
||||||
|
return;
|
||||||
|
}
|
||||||
FOptionPane.showOptionDialog(Forge.getLocalizer().getMessage("lblPlsSelectActions"), "", FOptionPane.QUESTION_ICON, ImmutableList.of(Forge.getLocalizer().getMessage("lblBackup"), Forge.getLocalizer().getMessage("lblRestore"), Forge.getLocalizer().getMessage("lblCancel")), 2, new Callback<Integer>() {
|
FOptionPane.showOptionDialog(Forge.getLocalizer().getMessage("lblPlsSelectActions"), "", FOptionPane.QUESTION_ICON, ImmutableList.of(Forge.getLocalizer().getMessage("lblBackup"), Forge.getLocalizer().getMessage("lblRestore"), Forge.getLocalizer().getMessage("lblCancel")), 2, new Callback<Integer>() {
|
||||||
@Override
|
@Override
|
||||||
public void run(Integer result) {
|
public void run(Integer result) {
|
||||||
|
|||||||
@@ -27,4 +27,6 @@ public interface IDeviceAdapter {
|
|||||||
Pair<Integer, Integer> getRealScreenSize(boolean real);
|
Pair<Integer, Integer> getRealScreenSize(boolean real);
|
||||||
ArrayList<String> getGamepads();
|
ArrayList<String> getGamepads();
|
||||||
UpnpServiceConfiguration getUpnpPlatformService();
|
UpnpServiceConfiguration getUpnpPlatformService();
|
||||||
|
boolean needFileAccess();
|
||||||
|
void requestFileAcces();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user