浏览代码

redirect to app permission page if user reject request permanently; replace onCreate to onStart for handling go back from permission page correctly.

Pal Lockheart 8 年之前
父节点
当前提交
ac6ed39efe
共有 1 个文件被更改,包括 12 次插入7 次删除
  1. 12 7
      android/app/src/main/java/io/github/sdlpal/MainActivity.java

+ 12 - 7
android/app/src/main/java/io/github/sdlpal/MainActivity.java

@@ -10,6 +10,8 @@ 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.provider.Settings;
+import android.net.Uri;
 
 import java.io.*;
 
@@ -23,12 +25,16 @@ public class MainActivity extends AppCompatActivity {
     private final static int REQUEST_FILESYSTEM_ACCESS_CODE = 101;
     private final AppCompatActivity mActivity = this;
 
-    private void requestForPermissions(boolean exitIfRequestForbidden) {
+    private void requestForPermissions(boolean setupManuallyIfRequestForbidden) {
         if (ActivityCompat.shouldShowRequestPermissionRationale(mActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
             ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_FILESYSTEM_ACCESS_CODE);
         } else {
-            if (exitIfRequestForbidden) {
-                System.exit(1);
+            if (setupManuallyIfRequestForbidden) {
+                Intent intent = new Intent();
+                intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+                Uri uri = Uri.fromParts("package", getPackageName(), null);
+                intent.setData(uri);
+                startActivity(intent);
             } else {
                 alertUser();
             }
@@ -68,10 +74,9 @@ public class MainActivity extends AppCompatActivity {
         }
     }
 
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
+    public void onStart() {
+        super.onStart();
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED ) {
             StartGame();
         } else {
             requestForPermissions(false);