Skip to content

Commit

Permalink
Storage permission request for mobile application
Browse files Browse the repository at this point in the history
  • Loading branch information
modos189 committed Dec 2, 2018
1 parent 92a616d commit 256540f
Showing 1 changed file with 24 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,22 +1,26 @@
package org.exarhteam.iitc_mobile;

import android.Manifest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.AssetManager;
import android.net.Uri;
import android.os.Environment;
import android.os.ParcelFileDescriptor;
import android.preference.PreferenceManager;
import android.support.v4.app.ActivityCompat;
import android.text.Html;
import android.util.Base64;
import android.util.Base64OutputStream;
import android.webkit.WebResourceResponse;
import android.widget.Toast;
import android.os.Build;

import org.exarhteam.iitc_mobile.IITC_Mobile.ResponseHandler;
import org.exarhteam.iitc_mobile.async.UpdateScript;
Expand Down Expand Up @@ -331,6 +335,11 @@ public void updatePlugins(final boolean force) {
final long lastUpdated = mPrefs.getLong("pref_last_plugin_update", 0);
final long now = System.currentTimeMillis();

final IITC_Mobile iitc = (IITC_Mobile) mActivity;
if (!isWriteStoragePermissionGranted(iitc)) {
Toast.makeText(mActivity, "Permissions are required if you want to use user scripts or cache on SDCard", Toast.LENGTH_LONG).show();
}

// return if no update wanted
if ((now - lastUpdated < mUpdateInterval) && !force) return;
// get the plugin preferences
Expand All @@ -355,6 +364,19 @@ public void setUpdateInterval(final int interval) {
mUpdateInterval = 1000 * 60 * 60 * 24 * interval;
}

private boolean isWriteStoragePermissionGranted(IITC_Mobile iitc) {
if (Build.VERSION.SDK_INT >= 23) {
if (ActivityCompat.checkSelfPermission(iitc, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(iitc, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 3);
return true;
} else {
return false;
}
} else { //permission is automatically granted on sdk<23 upon installation
return true;
}
}

private class FileRequest extends WebResourceResponse implements ResponseHandler, Runnable {
private Intent mData;
private final String mFunctionName;
Expand All @@ -380,6 +402,8 @@ private FileRequest(final Uri uri) {
.addCategory(Intent.CATEGORY_OPENABLE);
final IITC_Mobile iitc = (IITC_Mobile) mActivity;

Log.d("Request permissions");

try {
iitc.startActivityForResult(Intent.createChooser(target, "Choose file"), this);
} catch (final ActivityNotFoundException e) {
Expand Down

0 comments on commit 256540f

Please sign in to comment.