]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
Support runtime permissions.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 29 Oct 2016 18:59:23 +0000 (20:59 +0200)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 29 Oct 2016 18:59:23 +0000 (20:59 +0200)
AndroidManifest.xml
build.gradle
src/com/hughes/android/dictionary/DictionaryManagerActivity.java

index 4e76e8661044006ff324c7ac1b44d88ae80048ac..9612e212a8de5b181697921a32b73dda7d5146e3 100644 (file)
@@ -2,12 +2,12 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.hughes.android.dictionary"
     android:installLocation="auto"
-    android:versionCode="74"
+    android:versionCode="77"
     android:versionName="5.3.0" >
 
     <uses-sdk
         android:minSdkVersion="10"
-        android:targetSdkVersion="19" />
+        android:targetSdkVersion="23" />
 
     <uses-feature
         android:name="android.hardware.touchscreen"
index bd8ae53c9c95e0194c92dcc0dd8734e7caa5ba65..cdf51ac9b6a37fbb4ec187306978f07a9cf6e324 100644 (file)
@@ -76,6 +76,6 @@ android {
     }
     defaultConfig {
         applicationId 'de.reimardoeffinger.quickdic'
-        targetSdkVersion 22
+        targetSdkVersion 23
     }
 }
index 0139c474b18aa142ac6e0c6eab96ee5154bab59a..b195a9961815554bec14673af8b9be63b14a70ae 100644 (file)
@@ -14,6 +14,7 @@
 
 package com.hughes.android.dictionary;
 
+import android.Manifest;
 import android.app.AlertDialog;
 import android.app.DownloadManager;
 import android.app.DownloadManager.Request;
@@ -24,12 +25,15 @@ import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
+import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.Handler;
 import android.preference.PreferenceManager;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
 import android.support.v4.view.MenuItemCompat;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.ActionBarActivity;
@@ -227,6 +231,38 @@ public class DictionaryManagerActivity extends ActionBarActivity {
         return intent;
     }
 
+    public void readableCheckAndError(boolean requestPermission) {
+        final File dictDir = application.getDictDir();
+        if (dictDir.canRead() && dictDir.canExecute()) return;
+        blockAutoLaunch = true;
+        if (requestPermission &&
+            ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+            ActivityCompat.requestPermissions(this,
+                new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
+                             Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
+            return;
+        }
+        blockAutoLaunch = true;
+
+        AlertDialog.Builder builder = new AlertDialog.Builder(getListView().getContext());
+        builder.setTitle(getString(R.string.error));
+        builder.setMessage(getString(
+                R.string.unableToReadDictionaryDir,
+                dictDir.getAbsolutePath(),
+                Environment.getExternalStorageDirectory()));
+        builder.setNeutralButton("Close", null);
+        builder.create().show();
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
+        readableCheckAndError(false);
+
+        application.backgroundUpdateDictionaries(dictionaryUpdater);
+
+        setMyListAdapater();
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         // This must be first, otherwise the actiona bar doesn't get
@@ -276,19 +312,7 @@ public class DictionaryManagerActivity extends ActionBarActivity {
         setMyListAdapater();
         registerForContextMenu(getListView());
 
-        final File dictDir = application.getDictDir();
-        if (!dictDir.canRead() || !dictDir.canExecute()) {
-            blockAutoLaunch = true;
-
-            AlertDialog.Builder builder = new AlertDialog.Builder(getListView().getContext());
-            builder.setTitle(getString(R.string.error));
-            builder.setMessage(getString(
-                    R.string.unableToReadDictionaryDir,
-                    dictDir.getAbsolutePath(),
-                    Environment.getExternalStorageDirectory()));
-            builder.setNeutralButton("Close", null);
-            builder.create().show();
-        }
+        readableCheckAndError(true);
 
         onCreateSetupActionBar();
     }