Browse Source

target latest SDK WIP; runtime permission grand callback not called; need test on old devices

Pal Lockheart 7 years ago
parent
commit
6d61300e6a

+ 1 - 1
android/app/build.gradle

@@ -7,7 +7,7 @@ android {
     defaultConfig {
         applicationId "io.github.sdlpal"
         minSdkVersion 10
-        targetSdkVersion 12
+        targetSdkVersion 25
         externalNativeBuild {
             ndkBuild {
                 arguments "NDK_APPLICATION_MK:=src/main/cpp/Application.mk"

+ 1 - 1
android/app/src/main/AndroidManifest.xml

@@ -8,7 +8,7 @@
     <!-- Android 2.3.3 -->
     <uses-sdk
         android:minSdkVersion="10"
-        android:targetSdkVersion="12" />
+        android:targetSdkVersion="25" />
 
     <!-- OpenGL ES 2.0 -->
     <uses-feature android:glEsVersion="0x00020000" />

+ 55 - 0
android/app/src/main/java/io/github/sdlpal/MainActivity.java

@@ -1,8 +1,17 @@
 package io.github.sdlpal;
 
+import android.Manifest;
+import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.os.*;
+import android.support.annotation.NonNull;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
+import android.support.v7.app.AlertDialog;
 import android.support.v7.app.AppCompatActivity;
+import android.widget.Toast;
+
 import java.io.*;
 
 public class MainActivity extends AppCompatActivity {
@@ -12,10 +21,56 @@ public class MainActivity extends AppCompatActivity {
 
     public static boolean crashed = false;
 
+    private final static int REQUEST_FILESYSTEM_ACCESS_CODE = 101;
+
+    private boolean checkIfAlreadyhavePermission() {
+        int result = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
+        if (result == PackageManager.PERMISSION_GRANTED) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+    private void requestForSpecificPermission() {
+        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_FILESYSTEM_ACCESS_CODE);
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+        switch (requestCode) {
+            case REQUEST_FILESYSTEM_ACCESS_CODE:
+                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+                    StartGame();
+                } else {
+                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
+                    builder.setMessage(R.string.toast_requestpermission);
+                    builder.setCancelable(false);
+                    builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+                        @Override
+                        public void onClick(DialogInterface dialogInterface, int i) {
+                            requestForSpecificPermission();
+                        }
+                    });
+                    builder.create().show();
+                }
+                break;
+        }
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        int MyVersion = Build.VERSION.SDK_INT;
+        if (MyVersion < Build.VERSION_CODES.M || checkIfAlreadyhavePermission())
+            StartGame();
+        else
+            requestForSpecificPermission();
+    }
+
+    public void StartGame() {
+
         System.loadLibrary("SDL2");
         System.loadLibrary("main");
 

+ 1 - 0
android/app/src/main/res/values-zh-rTW/strings.xml

@@ -26,4 +26,5 @@
     <string name="action_usefontfile">自訂字體檔案</string>
     <string name="action_usemsgfile">自訂語言檔案</string>
     <string name="action_uselogfile">記錄到檔案</string>
+    <string name="toast_requestpermission">請允許SD卡讀寫,否則程式無法正常運行</string>
 </resources>

+ 1 - 0
android/app/src/main/res/values-zh/strings.xml

@@ -26,4 +26,5 @@
     <string name="action_uselogfile">记录到文件</string>
     <string name="action_usemsgfile">自定义语言文件</string>
     <string name="action_usefontfile">自定义字体文件</string>
+    <string name="toast_requestpermission">请允许SD卡读写,否则程序无法正常运行</string>
 </resources>

+ 1 - 0
android/app/src/main/res/values/strings.xml

@@ -26,4 +26,5 @@
     <string name="action_usemsgfile">Customized message file</string>
     <string name="action_usefontfile">Customized font file</string>
     <string name="action_uselogfile">Log to file</string>
+    <string name="toast_requestpermission">Please approve accessing sdcard or app cannot work properly.</string>
 </resources>

+ 1 - 1
android/build.gradle

@@ -4,7 +4,7 @@ buildscript {
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.1'
+        classpath 'com.android.tools.build:gradle:2.3.2'
     }
 }
 

+ 2 - 2
android/gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
-#Fri Apr 07 22:27:49 CST 2017
+#Wed May 24 14:36:44 CST 2017
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-all.zip