More marshmallow permission support

This commit is contained in:
mhutti1 2016-04-06 22:31:24 +01:00
parent aa2318d161
commit e4351d696b
3 changed files with 102 additions and 63 deletions

View File

@ -56,6 +56,5 @@
<string name="no_bookmarks">No bookmarks!</string> <string name="no_bookmarks">No bookmarks!</string>
<string name="menu_bookmarks_list">Bookmarks</string> <string name="menu_bookmarks_list">Bookmarks</string>
<string name="no_section_info">No Content Headers Found</string> <string name="no_section_info">No Content Headers Found</string>
<string name="request_storage">To search for zim files we need access to your storage</string> <string name="request_storage">To access zim files we need access to your storage</string>
<string name="request_storage_title">Warning</string>
</resources> </resources>

View File

@ -19,12 +19,14 @@
package org.kiwix.kiwixmobile; package org.kiwix.kiwixmobile;
import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.content.ActivityNotFoundException; import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
@ -37,6 +39,8 @@ import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.GravityCompat; import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.ActionBarDrawerToggle;
@ -74,7 +78,17 @@ import android.widget.ListView;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import org.json.JSONArray; import org.json.JSONArray;
import org.kiwix.kiwixmobile.settings.Constants; import org.kiwix.kiwixmobile.settings.Constants;
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity; import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
@ -89,18 +103,6 @@ import org.kiwix.kiwixmobile.views.BookmarksActivity;
import org.kiwix.kiwixmobile.views.CompatFindActionModeCallback; import org.kiwix.kiwixmobile.views.CompatFindActionModeCallback;
import org.kiwix.kiwixmobile.views.KiwixWebView; import org.kiwix.kiwixmobile.views.KiwixWebView;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
public class KiwixMobileActivity extends AppCompatActivity { public class KiwixMobileActivity extends AppCompatActivity {
public static final String TAG_KIWIX = "kiwix"; public static final String TAG_KIWIX = "kiwix";
@ -199,6 +201,8 @@ public class KiwixMobileActivity extends AppCompatActivity {
private AnimatedProgressBar mProgressBar; private AnimatedProgressBar mProgressBar;
private File mFile;
// Initialized when onActionModeStarted is triggered. // Initialized when onActionModeStarted is triggered.
private ActionMode mActionMode = null; private ActionMode mActionMode = null;
@ -816,6 +820,9 @@ public class KiwixMobileActivity extends AppCompatActivity {
} }
public boolean openZimFile(File file, boolean clearHistory) { public boolean openZimFile(File file, boolean clearHistory) {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
if (file.exists()) { if (file.exists()) {
if (ZimContentProvider.setZimFile(file.getAbsolutePath()) != null) { if (ZimContentProvider.setZimFile(file.getAbsolutePath()) != null) {
@ -851,6 +858,34 @@ public class KiwixMobileActivity extends AppCompatActivity {
.show(); .show();
} }
return false; return false;
} else {
mFile = file;
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
KiwixMobileActivity.REQUEST_STORAGE_PERMISSION);
Toast.makeText(this, getResources().getString(R.string.request_storage), Toast.LENGTH_LONG)
.show();
return false;
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case KiwixMobileActivity.REQUEST_STORAGE_PERMISSION: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
finish();
Intent newZimFile = new Intent(KiwixMobileActivity.this, KiwixMobileActivity.class);
newZimFile.setData(Uri.fromFile(mFile));
startActivity(newZimFile);
} else {
finish();
}
return;
}
}
} }
private void initAllMenuItems() { private void initAllMenuItems() {

View File

@ -35,7 +35,6 @@ import android.support.v4.content.ContextCompat;
import android.support.v4.content.CursorLoader; import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader; import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter; import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.util.Log; import android.util.Log;
@ -52,6 +51,7 @@ import android.widget.ArrayAdapter;
import android.widget.ListView; import android.widget.ListView;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -112,24 +112,20 @@ public class ZimFileSelectActivity extends AppCompatActivity
public void checkPermissions(){ public void checkPermissions(){
if (ContextCompat.checkSelfPermission(this, if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_CONTACTS) Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) { != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, getResources().getString(R.string.request_storage), Toast.LENGTH_LONG)
.show();
ActivityCompat.requestPermissions(this, ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
KiwixMobileActivity.REQUEST_STORAGE_PERMISSION); KiwixMobileActivity.REQUEST_STORAGE_PERMISSION);
} else {
getFiles();
} }
} }
@Override public void getFiles(){
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case KiwixMobileActivity.REQUEST_STORAGE_PERMISSION: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mProgressBar = (ProgressBar) findViewById(R.id.progressBar); mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mProgressBarMessage = (TextView) findViewById(R.id.progressbar_message); mProgressBarMessage = (TextView) findViewById(R.id.progressbar_message);
@ -145,7 +141,16 @@ public class ZimFileSelectActivity extends AppCompatActivity
} else { } else {
new RescanFileSystem().execute(); new RescanFileSystem().execute();
} }
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case KiwixMobileActivity.REQUEST_STORAGE_PERMISSION: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
getFiles();
} else { } else {
finish(); finish();
} }