mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-08-03 18:56:44 -04:00
More marshmallow permission support
This commit is contained in:
parent
aa2318d161
commit
e4351d696b
@ -56,6 +56,5 @@
|
||||
<string name="no_bookmarks">No bookmarks!</string>
|
||||
<string name="menu_bookmarks_list">Bookmarks</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_title">Warning</string>
|
||||
<string name="request_storage">To access zim files we need access to your storage</string>
|
||||
</resources>
|
@ -19,12 +19,14 @@
|
||||
|
||||
package org.kiwix.kiwixmobile;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.PorterDuff;
|
||||
@ -37,6 +39,8 @@ import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.preference.PreferenceManager;
|
||||
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.widget.DrawerLayout;
|
||||
import android.support.v7.app.ActionBarDrawerToggle;
|
||||
@ -74,7 +78,17 @@ import android.widget.ListView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
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.kiwix.kiwixmobile.settings.Constants;
|
||||
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.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 static final String TAG_KIWIX = "kiwix";
|
||||
@ -199,6 +201,8 @@ public class KiwixMobileActivity extends AppCompatActivity {
|
||||
|
||||
private AnimatedProgressBar mProgressBar;
|
||||
|
||||
private File mFile;
|
||||
|
||||
// Initialized when onActionModeStarted is triggered.
|
||||
private ActionMode mActionMode = null;
|
||||
|
||||
@ -816,41 +820,72 @@ public class KiwixMobileActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
public boolean openZimFile(File file, boolean clearHistory) {
|
||||
if (file.exists()) {
|
||||
if (ZimContentProvider.setZimFile(file.getAbsolutePath()) != null) {
|
||||
if (ContextCompat.checkSelfPermission(this,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE)
|
||||
== PackageManager.PERMISSION_GRANTED) {
|
||||
if (file.exists()) {
|
||||
if (ZimContentProvider.setZimFile(file.getAbsolutePath()) != null) {
|
||||
|
||||
// Apparently with webView.clearHistory() only history before currently (fully)
|
||||
// loaded page is cleared -> request clear, actual clear done after load.
|
||||
// Probably not working in all corners (e.g. zim file openend
|
||||
// while load in progress, mainpage of new zim file invalid, ...
|
||||
// but should be good enough.
|
||||
// Actually probably redundant if no zim file openend before in session,
|
||||
// but to be on save side don't clear history in such cases.
|
||||
if (clearHistory) {
|
||||
requestClearHistoryAfterLoad = true;
|
||||
}
|
||||
if (menu != null) {
|
||||
initAllMenuItems();
|
||||
// Apparently with webView.clearHistory() only history before currently (fully)
|
||||
// loaded page is cleared -> request clear, actual clear done after load.
|
||||
// Probably not working in all corners (e.g. zim file openend
|
||||
// while load in progress, mainpage of new zim file invalid, ...
|
||||
// but should be good enough.
|
||||
// Actually probably redundant if no zim file openend before in session,
|
||||
// but to be on save side don't clear history in such cases.
|
||||
if (clearHistory) {
|
||||
requestClearHistoryAfterLoad = true;
|
||||
}
|
||||
if (menu != null) {
|
||||
initAllMenuItems();
|
||||
} else {
|
||||
// Menu may not be initialized yet. In this case
|
||||
// signal to menu create to show
|
||||
requestInitAllMenuItems = true;
|
||||
}
|
||||
|
||||
openMainPage();
|
||||
refreshBookmarks();
|
||||
return true;
|
||||
} else {
|
||||
// Menu may not be initialized yet. In this case
|
||||
// signal to menu create to show
|
||||
requestInitAllMenuItems = true;
|
||||
Toast.makeText(this, getResources().getString(R.string.error_fileinvalid),
|
||||
Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
openMainPage();
|
||||
refreshBookmarks();
|
||||
return true;
|
||||
} else {
|
||||
Toast.makeText(this, getResources().getString(R.string.error_fileinvalid),
|
||||
Toast.LENGTH_LONG).show();
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG_KIWIX, "ZIM file doesn't exist at " + file.getAbsolutePath());
|
||||
Log.e(TAG_KIWIX, "ZIM file doesn't exist at " + file.getAbsolutePath());
|
||||
|
||||
Toast.makeText(this, getResources().getString(R.string.error_filenotfound), Toast.LENGTH_LONG)
|
||||
Toast.makeText(this, getResources().getString(R.string.error_filenotfound), Toast.LENGTH_LONG)
|
||||
.show();
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void initAllMenuItems() {
|
||||
|
@ -35,7 +35,6 @@ import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.content.CursorLoader;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v4.widget.SimpleCursorAdapter;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
@ -52,6 +51,7 @@ import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -112,13 +112,34 @@ public class ZimFileSelectActivity extends AppCompatActivity
|
||||
|
||||
public void checkPermissions(){
|
||||
if (ContextCompat.checkSelfPermission(this,
|
||||
Manifest.permission.READ_CONTACTS)
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE)
|
||||
!= PackageManager.PERMISSION_GRANTED) {
|
||||
|
||||
Toast.makeText(this, getResources().getString(R.string.request_storage), Toast.LENGTH_LONG)
|
||||
.show();
|
||||
ActivityCompat.requestPermissions(this,
|
||||
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
|
||||
KiwixMobileActivity.REQUEST_STORAGE_PERMISSION);
|
||||
|
||||
} else {
|
||||
getFiles();
|
||||
}
|
||||
}
|
||||
|
||||
public void getFiles(){
|
||||
|
||||
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
|
||||
mProgressBarMessage = (TextView) findViewById(R.id.progressbar_message);
|
||||
mZimFileList = (ListView) findViewById(R.id.zimfilelist);
|
||||
|
||||
mZimFileList.setOnItemClickListener(this);
|
||||
|
||||
mProgressBar.setVisibility(View.VISIBLE);
|
||||
setAlpha(true);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
startQuery();
|
||||
} else {
|
||||
new RescanFileSystem().execute();
|
||||
}
|
||||
}
|
||||
|
||||
@ -129,23 +150,7 @@ public class ZimFileSelectActivity extends AppCompatActivity
|
||||
case KiwixMobileActivity.REQUEST_STORAGE_PERMISSION: {
|
||||
if (grantResults.length > 0
|
||||
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
|
||||
|
||||
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
|
||||
mProgressBarMessage = (TextView) findViewById(R.id.progressbar_message);
|
||||
mZimFileList = (ListView) findViewById(R.id.zimfilelist);
|
||||
|
||||
mZimFileList.setOnItemClickListener(this);
|
||||
|
||||
mProgressBar.setVisibility(View.VISIBLE);
|
||||
setAlpha(true);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
startQuery();
|
||||
} else {
|
||||
new RescanFileSystem().execute();
|
||||
}
|
||||
|
||||
getFiles();
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user