diff options
6 files changed, 32 insertions, 25 deletions
diff --git a/build/android/app/build.gradle b/build/android/app/build.gradle index 9d14cdab8..00b8806bf 100644 --- a/build/android/app/build.gradle +++ b/build/android/app/build.gradle @@ -2,12 +2,11 @@ apply plugin: 'com.android.application' android { compileSdkVersion 29 buildToolsVersion '29.0.3' - ndkVersion '21.0.6113669' + ndkVersion '21.1.6352462' defaultConfig { applicationId 'net.minetest.minetest' minSdkVersion 16 - //noinspection OldTargetApi - targetSdkVersion 28 // Workaround for using `/sdcard` instead of the `data` patch for assets + targetSdkVersion 29 versionName "${versionMajor}.${versionMinor}.${versionPatch}" versionCode project.versionCode } diff --git a/build/android/app/src/main/AndroidManifest.xml b/build/android/app/src/main/AndroidManifest.xml index 3a5342751..aa5af110e 100644 --- a/build/android/app/src/main/AndroidManifest.xml +++ b/build/android/app/src/main/AndroidManifest.xml @@ -7,11 +7,18 @@ <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <!-- + `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 android:allowBackup="false" android:icon="@mipmap/ic_launcher" android:label="@string/label" android:resizeableActivity="false" + android:requestLegacyExternalStorage="true" tools:ignore="UnusedAttribute"> <meta-data diff --git a/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java b/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java index 770995502..d6e9d9ee1 100644 --- a/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java +++ b/build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java @@ -23,7 +23,7 @@ package net.minetest.minetest; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; -import android.util.Log; +import android.widget.Toast; import java.io.FileOutputStream; import java.io.IOException; @@ -40,7 +40,7 @@ public class CopyZipTask extends AsyncTask<String, Void, String> { } protected String doInBackground(String... params) { - copyAssets(params); + copyAsset(params[0]); return params[0]; } @@ -49,20 +49,13 @@ public class CopyZipTask extends AsyncTask<String, Void, String> { startUnzipService(result); } - private void copyAsset(String zipName) throws IOException { + private void copyAsset(String zipName) { String filename = zipName.substring(zipName.lastIndexOf("/") + 1); try (InputStream in = contextRef.get().getAssets().open(filename); OutputStream out = new FileOutputStream(zipName)) { copyFile(in, out); - } - } - - private void copyAssets(String[] zips) { - try { - for (String zipName : zips) - copyAsset(zipName); } catch (IOException e) { - Log.e("CopyZipTask", e.getLocalizedMessage()); + Toast.makeText(contextRef.get(), e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); cancel(true); } } diff --git a/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java b/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java index f37ae6d4b..1e60beb55 100644 --- a/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java +++ b/build/android/app/src/main/java/net/minetest/minetest/MainActivity.java @@ -43,6 +43,11 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static net.minetest.minetest.UnzipService.ACTION_PROGRESS; +import static net.minetest.minetest.UnzipService.ACTION_UPDATE; +import static net.minetest.minetest.UnzipService.FAILURE; +import static net.minetest.minetest.UnzipService.SUCCESS; + public class MainActivity extends AppCompatActivity { private final static int versionCode = BuildConfig.VERSION_CODE; private final static int PERMISSIONS = 1; @@ -58,14 +63,16 @@ public class MainActivity extends AppCompatActivity { public void onReceive(Context context, Intent intent) { int progress = 0; if (intent != null) - progress = intent.getIntExtra(UnzipService.ACTION_PROGRESS, 0); + progress = intent.getIntExtra(ACTION_PROGRESS, 0); if (progress >= 0) { if (mProgressBar != null) { mProgressBar.setVisibility(View.VISIBLE); mProgressBar.setProgress(progress); } mTextView.setVisibility(View.VISIBLE); - } else + } else if (progress == FAILURE) { + finish(); + } else if (progress == SUCCESS) startNative(); } }; @@ -74,7 +81,7 @@ public class MainActivity extends AppCompatActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - IntentFilter filter = new IntentFilter(UnzipService.ACTION_UPDATE); + IntentFilter filter = new IntentFilter(ACTION_UPDATE); registerReceiver(myReceiver, filter); mProgressBar = findViewById(R.id.progressBar); mTextView = findViewById(R.id.textView); diff --git a/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java b/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java index ac9116994..6356dff19 100644 --- a/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java +++ b/build/android/app/src/main/java/net/minetest/minetest/UnzipService.java @@ -28,11 +28,10 @@ import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Environment; -import android.util.Log; +import android.widget.Toast; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -44,9 +43,12 @@ public class UnzipService extends IntentService { public static final String ACTION_UPDATE = "net.minetest.minetest.UPDATE"; public static final String ACTION_PROGRESS = "net.minetest.minetest.PROGRESS"; public static final String EXTRA_KEY_IN_FILE = "file"; + public static final int SUCCESS = -1; + public static final int FAILURE = -2; private static final String TAG = "UnzipService"; private final int id = 1; private NotificationManager mNotifyManager; + private boolean isSuccess = true; public UnzipService() { super("net.minetest.minetest.UnzipService"); @@ -120,10 +122,9 @@ public class UnzipService extends IntentService { } zipFile.delete(); } - } catch (FileNotFoundException e) { - Log.e(TAG, e.getLocalizedMessage()); } catch (IOException e) { - Log.e(TAG, e.getLocalizedMessage()); + isSuccess = false; + Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); } } @@ -139,7 +140,7 @@ public class UnzipService extends IntentService { ZipFile zipSize = new ZipFile(zip); size += zipSize.size(); } catch (IOException e) { - Log.e(TAG, e.getLocalizedMessage()); + Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); } return size; } @@ -148,6 +149,6 @@ public class UnzipService extends IntentService { public void onDestroy() { super.onDestroy(); mNotifyManager.cancel(id); - publishProgress(-1); + publishProgress(isSuccess ? SUCCESS : FAILURE); } } diff --git a/build/android/native/build.gradle b/build/android/native/build.gradle index f06e4e3f0..cbd50db6a 100644 --- a/build/android/native/build.gradle +++ b/build/android/native/build.gradle @@ -4,7 +4,7 @@ import org.ajoberstar.grgit.Grgit android { compileSdkVersion 29 buildToolsVersion '29.0.3' - ndkVersion '21.0.6113669' + ndkVersion '21.1.6352462' defaultConfig { minSdkVersion 16 targetSdkVersion 29 |