Android: some java-part improvements (#9760)
authorMaksim <MoNTE48@mail.ua>
Mon, 4 May 2020 06:47:00 +0000 (08:47 +0200)
committerGitHub <noreply@github.com>
Mon, 4 May 2020 06:47:00 +0000 (08:47 +0200)
Replace Log to Toast.
Start Native only after successful unpacking.
Light refactoring in CopyZipTask.
Update NDK version.

Co-authored-by: ubulem <berkut87@gmail.com>
build/android/app/build.gradle
build/android/app/src/main/AndroidManifest.xml
build/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java
build/android/app/src/main/java/net/minetest/minetest/MainActivity.java
build/android/app/src/main/java/net/minetest/minetest/UnzipService.java
build/android/native/build.gradle

index 9d14cdab8fcc93e0dc6836f9aac7a12538aff8ad..00b8806bf848f3c55dcede0b0fc3423743489568 100644 (file)
@@ -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
        }
index 3a53427514d883d2744071da765f2b190b3b8650..aa5af110eca11a96e451ed0a60057baa771aeff7 100644 (file)
@@ -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
index 7709955023f7bb11103c17c145b37e68b05fcdfe..d6e9d9ee10f579d18736bbf1a7c6c5b616642702 100644 (file)
@@ -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);
                }
        }
index f37ae6d4b09baf6df65e1ff40706ed4dc692d6a9..1e60beb55bed5cebdfff93a0bdaba6aaf771400c 100644 (file)
@@ -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);
index ac9116994d7052a62df84fe27a495476cec291c7..6356dff1931e4738e82e08216e338f3551633935 100644 (file)
@@ -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);
        }
 }
index f06e4e3f05bcd1aa29372c1200f38bd363101b8b..cbd50db6a3b0ce4cb6e83a4a0dbb25e899921d47 100644 (file)
@@ -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