#735 Fix ZIM redirects

This commit is contained in:
mhutti1 2019-08-14 14:23:48 +02:00
parent c3f7e6f0ad
commit 4973109bd5
2 changed files with 15 additions and 3 deletions

View File

@ -365,6 +365,15 @@ public class ZimContentProvider extends ContentProvider {
return mimeType;
}
public static String getRedirect(String url) {
return Uri.parse(CONTENT_URI + currentJNIReader.checkUrl(getFilePath(Uri.parse(url))))
.toString();
}
public static boolean isRedirect(String url) {
return !url.equals(getRedirect(url));
}
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
@ -412,7 +421,7 @@ public class ZimContentProvider extends ContentProvider {
JNIKiwixString mime = new JNIKiwixString();
JNIKiwixString title = new JNIKiwixString();
JNIKiwixInt size = new JNIKiwixInt();
byte[] data = currentJNIReader.getContent(filePath, title, mime, size);
byte[] data = currentJNIReader.getContent(new JNIKiwixString(filePath), title, mime, size);
FileOutputStream out = new FileOutputStream(f);
out.write(data, 0, data.length);
out.flush();
@ -476,7 +485,7 @@ public class ZimContentProvider extends ContentProvider {
JNIKiwixString mime = new JNIKiwixString();
JNIKiwixString title = new JNIKiwixString();
JNIKiwixInt size = new JNIKiwixInt();
byte[] data = currentJNIReader.getContent(articleZimUrl, title, mime, size);
byte[] data = currentJNIReader.getContent(new JNIKiwixString(articleZimUrl), title, mime, size);
if (mime.value != null && mime.value.equals("text/css") && MainActivity.nightMode) {
out.write(("img, video { \n" +
" -webkit-filter: invert(1); \n" +

View File

@ -55,7 +55,10 @@ public class KiwixWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
callback.webViewUrlLoading();
if (url.startsWith(ZimContentProvider.CONTENT_URI.toString())) {
if (ZimContentProvider.isRedirect(url)) {
view.loadUrl(ZimContentProvider.getRedirect(url));
return true;
} else if (url.startsWith(ZimContentProvider.CONTENT_URI.toString())) {
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (DOCUMENT_TYPES.containsKey(extension)) {
Intent intent = new Intent(Intent.ACTION_VIEW);