From 4973109bd5e6972d53674dbbd9543866e9ee7732 Mon Sep 17 00:00:00 2001 From: mhutti1 Date: Wed, 14 Aug 2019 14:23:48 +0200 Subject: [PATCH] #735 Fix ZIM redirects --- .../kiwix/kiwixmobile/data/ZimContentProvider.java | 13 +++++++++++-- .../kiwix/kiwixmobile/main/KiwixWebViewClient.java | 5 ++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/data/ZimContentProvider.java b/app/src/main/java/org/kiwix/kiwixmobile/data/ZimContentProvider.java index 5b2823e68..1d7da5144 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/data/ZimContentProvider.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/data/ZimContentProvider.java @@ -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" + diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixWebViewClient.java b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixWebViewClient.java index 1f560e9f7..72f317b43 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixWebViewClient.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixWebViewClient.java @@ -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);