forked from Mirrorlandia_minetest/minetest
Android: Remove Migration Code (#13590)
Co-authored-by: Muhammad Rifqi Priyo Susanto <muhammadrifqipriyosusanto@gmail.com>
This commit is contained in:
parent
c14e4d1795
commit
ba6de431a2
@ -5,21 +5,13 @@
|
|||||||
android:installLocation="auto">
|
android:installLocation="auto">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||||
<uses-feature android:glEsVersion="0x00020000" />
|
<uses-feature android:glEsVersion="0x00020000" />
|
||||||
|
|
||||||
<!--
|
|
||||||
`android:requestLegacyExternalStorage="true"` is workaround for using `/sdcard`
|
|
||||||
instead of the `getFilesDir()` patch for assets. Check link below for more information:
|
|
||||||
https://developer.android.com/training/data-storage/compatibility
|
|
||||||
-->
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:allowBackup="false"
|
android:allowBackup="false"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/label"
|
android:label="@string/label"
|
||||||
android:requestLegacyExternalStorage="true"
|
|
||||||
android:resizeableActivity="false"
|
android:resizeableActivity="false"
|
||||||
tools:ignore="UnusedAttribute">
|
tools:ignore="UnusedAttribute">
|
||||||
|
|
||||||
|
@ -20,38 +20,24 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
package net.minetest.minetest;
|
package net.minetest.minetest;
|
||||||
|
|
||||||
import android.Manifest;
|
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.core.app.ActivityCompat;
|
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static net.minetest.minetest.UnzipService.*;
|
import static net.minetest.minetest.UnzipService.*;
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
private final static int versionCode = BuildConfig.VERSION_CODE;
|
private final static int versionCode = BuildConfig.VERSION_CODE;
|
||||||
private final static int PERMISSIONS = 1;
|
|
||||||
private static final String[] REQUIRED_SDK_PERMISSIONS =
|
|
||||||
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
|
||||||
private static final String SETTINGS = "MinetestSettings";
|
private static final String SETTINGS = "MinetestSettings";
|
||||||
private static final String TAG_VERSION_CODE = "versionCode";
|
private static final String TAG_VERSION_CODE = "versionCode";
|
||||||
|
|
||||||
@ -100,58 +86,10 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
mProgressBar = findViewById(R.id.progressBar);
|
mProgressBar = findViewById(R.id.progressBar);
|
||||||
mTextView = findViewById(R.id.textView);
|
mTextView = findViewById(R.id.textView);
|
||||||
sharedPreferences = getSharedPreferences(SETTINGS, Context.MODE_PRIVATE);
|
sharedPreferences = getSharedPreferences(SETTINGS, Context.MODE_PRIVATE);
|
||||||
|
checkAppVersion();
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
|
|
||||||
Build.VERSION.SDK_INT < Build.VERSION_CODES.R)
|
|
||||||
checkPermission();
|
|
||||||
else
|
|
||||||
checkAppVersion();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkPermission() {
|
|
||||||
final List<String> missingPermissions = new ArrayList<>();
|
|
||||||
for (final String permission : REQUIRED_SDK_PERMISSIONS) {
|
|
||||||
final int result = ContextCompat.checkSelfPermission(this, permission);
|
|
||||||
if (result != PackageManager.PERMISSION_GRANTED)
|
|
||||||
missingPermissions.add(permission);
|
|
||||||
}
|
|
||||||
if (!missingPermissions.isEmpty()) {
|
|
||||||
final String[] permissions = missingPermissions
|
|
||||||
.toArray(new String[0]);
|
|
||||||
ActivityCompat.requestPermissions(this, permissions, PERMISSIONS);
|
|
||||||
} else {
|
|
||||||
final int[] grantResults = new int[REQUIRED_SDK_PERMISSIONS.length];
|
|
||||||
Arrays.fill(grantResults, PackageManager.PERMISSION_GRANTED);
|
|
||||||
onRequestPermissionsResult(PERMISSIONS, REQUIRED_SDK_PERMISSIONS, grantResults);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRequestPermissionsResult(
|
|
||||||
int requestCode,
|
|
||||||
@NonNull String[] permissions,
|
|
||||||
@NonNull int[] grantResults
|
|
||||||
) {
|
|
||||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
||||||
if (requestCode == PERMISSIONS) {
|
|
||||||
for (int grantResult : grantResults) {
|
|
||||||
if (grantResult != PackageManager.PERMISSION_GRANTED) {
|
|
||||||
Toast.makeText(this, R.string.not_granted, Toast.LENGTH_LONG).show();
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
checkAppVersion();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkAppVersion() {
|
private void checkAppVersion() {
|
||||||
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
|
|
||||||
Toast.makeText(this, R.string.no_external_storage, Toast.LENGTH_LONG).show();
|
|
||||||
finish();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (UnzipService.getIsRunning()) {
|
if (UnzipService.getIsRunning()) {
|
||||||
mProgressBar.setVisibility(View.VISIBLE);
|
mProgressBar.setVisibility(View.VISIBLE);
|
||||||
mProgressBar.setIndeterminate(true);
|
mProgressBar.setIndeterminate(true);
|
||||||
|
@ -28,7 +28,6 @@ import android.app.PendingIntent;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Environment;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@ -88,7 +87,6 @@ public class UnzipService extends IntentService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
migrate(notificationBuilder, userDataDirectory);
|
|
||||||
unzip(notificationBuilder, zipFile, userDataDirectory);
|
unzip(notificationBuilder, zipFile, userDataDirectory);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
isSuccess = false;
|
isSuccess = false;
|
||||||
@ -200,44 +198,6 @@ public class UnzipService extends IntentService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Migrates user data from deprecated external storage to app scoped storage
|
|
||||||
*/
|
|
||||||
private void migrate(Notification.Builder notificationBuilder, File newLocation) throws IOException {
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
File oldLocation = new File(Environment.getExternalStorageDirectory(), "Minetest");
|
|
||||||
if (!oldLocation.isDirectory())
|
|
||||||
return;
|
|
||||||
|
|
||||||
publishProgress(notificationBuilder, R.string.migrating, 0);
|
|
||||||
if (!newLocation.mkdir()) {
|
|
||||||
Log.e("UnzipService", "New installation folder cannot be made");
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] dirs = new String[] { "worlds", "games", "mods", "textures", "client" };
|
|
||||||
for (int i = 0; i < dirs.length; i++) {
|
|
||||||
publishProgress(notificationBuilder, R.string.migrating, 100 * i / dirs.length);
|
|
||||||
File dir = new File(oldLocation, dirs[i]), dir2 = new File(newLocation, dirs[i]);
|
|
||||||
if (dir.isDirectory() && !dir2.isDirectory()) {
|
|
||||||
moveFileOrDir(dir, dir2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String filename : new String[] { "minetest.conf" }) {
|
|
||||||
File file = new File(oldLocation, filename), file2 = new File(newLocation, filename);
|
|
||||||
if (file.isFile() && !file2.isFile()) {
|
|
||||||
moveFileOrDir(file, file2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!recursivelyDeleteDirectory(oldLocation)) {
|
|
||||||
Log.w("UnzipService", "Old installation files cannot be deleted successfully");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void publishProgress(@Nullable Notification.Builder notificationBuilder, @StringRes int message, int progress) {
|
private void publishProgress(@Nullable Notification.Builder notificationBuilder, @StringRes int message, int progress) {
|
||||||
Intent intentUpdate = new Intent(ACTION_UPDATE);
|
Intent intentUpdate = new Intent(ACTION_UPDATE);
|
||||||
intentUpdate.putExtra(ACTION_PROGRESS, progress);
|
intentUpdate.putExtra(ACTION_PROGRESS, progress);
|
||||||
|
@ -1,13 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<string name="label">Minetest</string>
|
<string name="label">Minetest</string>
|
||||||
<string name="loading">Loading…</string>
|
<string name="loading">Loading…</string>
|
||||||
<string name="migrating">Migrating save data from old install… (this may take a while)</string>
|
|
||||||
<string name="not_granted">Required permission wasn\'t granted, Minetest can\'t run without it</string>
|
|
||||||
<string name="notification_title">Loading Minetest</string>
|
<string name="notification_title">Loading Minetest</string>
|
||||||
<string name="notification_description">Less than 1 minute…</string>
|
<string name="notification_description">Less than 1 minute…</string>
|
||||||
<string name="ime_dialog_done">Done</string>
|
<string name="ime_dialog_done">Done</string>
|
||||||
<string name="no_external_storage">External storage isn\'t available. If you use an SDCard, please reinsert it. Otherwise, try restarting your phone or contacting the Minetest developers</string>
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user