From 41c0bb84c48c8052b80e5136a75f2be91a3b5bf8 Mon Sep 17 00:00:00 2001 From: mhutti1 Date: Fri, 2 Feb 2018 00:20:45 +0000 Subject: [PATCH] Update JNI and catch the new exception thrown by an invalid ZIM --- app/build.gradle | 2 +- .../kiwix/kiwixmobile/ZimContentProvider.java | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 83de24e0a..78e933699 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,7 +34,7 @@ dependencies { // Get kiwixlib online if it is not populated locally if (file("../kiwixlib/src/main").list().length == 1) { - implementation 'org.kiwix.kiwixlib:kiwixlib:1.0.6' + implementation 'org.kiwix.kiwixlib:kiwixlib:1.0.8' } else { implementation project(':kiwixlib') archs = file("../kiwixlib/src/main/jniLibs").list() diff --git a/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java b/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java index adefa70e1..0efe2f878 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java @@ -31,6 +31,7 @@ import android.webkit.MimeTypeMap; import java.io.RandomAccessFile; import org.kiwix.kiwixlib.JNIKiwix; +import org.kiwix.kiwixlib.JNIKiwixException; import org.kiwix.kiwixlib.JNIKiwixInt; import org.kiwix.kiwixlib.JNIKiwixReader; import org.kiwix.kiwixlib.JNIKiwixSearcher; @@ -110,19 +111,24 @@ public class ZimContentProvider extends ContentProvider { } public synchronized static String setZimFile(String fileName) { - JNIKiwixReader reader = new JNIKiwixReader(fileName); - if (!new File(fileName).exists() || reader == null) { - Log.e(TAG_KIWIX, "Unable to open the ZIM file " + fileName); + if (!new File(fileName).exists()) { + Log.e(TAG_KIWIX, "Unable to find the ZIM file " + fileName); zimFileName = null; - } else { + return zimFileName; + } + try { + JNIKiwixReader reader = new JNIKiwixReader(fileName); Log.i(TAG_KIWIX, "Opening ZIM file " + fileName); if(!listedEntries.contains(reader.getId())) { listedEntries.add(reader.getId()); jniSearcher.addKiwixReader(reader); + currentJNIReader = reader; } zimFileName = fileName; + } catch (JNIKiwixException e) { + Log.e(TAG_KIWIX, "Unable to open the ZIM file " + fileName); + zimFileName = null; } - currentJNIReader = reader; return zimFileName; }