A Java ePub reader and parser framework for Android.

Overview

FolioReader logo

Build Status

FolioReader-Android is an EPUB reader written in Java and Kotlin.

Features

  • Custom Fonts
  • Custom Text Size
  • Themes / Day mode / Night mode
  • Text Highlighting
  • List / Edit / Delete Highlights
  • Handle Internal and External Links
  • Portrait / Landscape
  • Reading Time Left / Pages left
  • In-App Dictionary
  • Media Overlays (Sync text rendering with audio playback)
  • TTS - Text to Speech Support
  • Parse epub cover image
  • PDF support
  • Book Search
  • Add Notes to a Highlight
  • Better Documentation
  • Last Read Locator
  • Horizontal Reading
  • Distraction Free Reading

Demo

Custom Fonts

Custom fonts

Day and Night Mode

Day night mode

Text Highlighting

Highlight

Media Overlays

Media Overlay

Gradle

Add following dependency to your root project build.gradle file:

allprojects {
    repositories {
        ...
        jcenter()
        maven { url "https://jitpack.io" }
        ...
    }
}

Add following dependency to your app module build.gradle file:

dependencies {
    ...
    implementation "com.folioreader:folioreader:0.5.4"
    ...
}

Enable Multidex support

Enable Multidex support as explained in this Android Doc

Usage

Get singleton object of FolioReader:

FolioReader folioReader = FolioReader.get();

Call the function openBook():

opening book from assets -
folioReader.openBook("file:///android_asset/TheSilverChair.epub");
opening book from raw -
folioReader.openBook(R.raw.accessible_epub_3);

WIKI

Reporting Issue

See KNOWN_ISSUES and CHANGELOG first before reporting any issue.
Please follow Issue Template to report any issue.

Share your application

If you are using FolioReader in your application, share your application link in this issue

Credits

  1. SwipeLayout
  2. r2-streamer-kotlin
  3. Pearson Dictionaries
  4. rangy

Author

Heberti Almeida

CodeToArt Technology

Donations

This project needs you! If you would like to support this project's further development, the creator of this project or the continuous maintenance of this project, feel free to donate. Your donation is highly appreciated. Thank you!

PayPal

  • Donate 5 $: Thank's for creating this project, here's a tea (or some juice) for you!
  • Donate 10 $: Wow, I am stunned. Let me take you to the movies!
  • Donate 15 $: I really appreciate your work, let's grab some lunch!
  • Donate 25 $: That's some awesome stuff you did right there, dinner is on me!
  • Donate 50 $: I really really want to support this project, great job!
  • Donate 100 $: You are the man! This project saved me hours (if not days) of struggle and hard work, simply awesome!
  • Of course, you can also choose what you want to donate, all donations are awesome!

License

FolioReaderKit is available under the BSD license. See the LICENSE file.

Comments
  • Fatal Exception: java.lang.IndexOutOfBoundsException

    Fatal Exception: java.lang.IndexOutOfBoundsException

    Fatal Exception: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) at java.util.ArrayList.get(ArrayList.java:308) at com.folioreader.ui.folio.activity.FolioActivity$1.onClick(FolioActivity.java:171) at android.view.View.performClick(View.java:5714) at android.view.View$PerformClick.run(View.java:22589) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:7325) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

    sometimes getting this error, while trying to open epub.

    opened by khaleeljageer 25
  • Unable to display my epub file

    Unable to display my epub file

    Issue / Feature - FolioReader version - 0.4.3 FolioReader Stock / Modified -
    Android SDK - Mobile / Tablet / Emulator Info -
    Crash / Error - s80919-18390944 s80919-18391413 Unable to display my epub file Steps to reproduce / Describe in detail -

    bug 
    opened by ycsghr 15
  • Problem when importing using gradle dependency?

    Problem when importing using gradle dependency?

    how solve this problem: My android studio version is 2.2.3 compileSdkVersion 26 buildToolsVersion "26.0.0" dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.0.0-alpha1' compile 'com.folioreader:folioreader:0.3.1' testCompile 'junit:junit:4.12' } problem Error:Failed to resolve: org.readium:r2-fetcher:0.1.2 Open File Show in Project Structure dialog

    opened by Maruf13 14
  • AAPT: error: resource android:attr/android:progressBarStyle not found

    AAPT: error: resource android:attr/android:progressBarStyle not found

    FolioReader version - 0.5.4 FolioReader Stock / Modified - Stock.

    Android SDK - minSdkVersion 21, targetSdkVersion 29

    Mobile / Tablet / Emulator Info - This is a build error.

    Crash / Error - ~/.gradle/caches/transforms-2/files-2.1/3b37d1e20c2d569e237caae59c970fe0/folioreader-0.5.4/res/layout/progress_dialog.xml:13: AAPT: error: resource android:attr/android:progressBarStyle not found.

    Steps to reproduce / Describe in detail - Add "implementation 'com.folioreader:folioreader:0.5.4'" in application build.gradle, but haven't added any code that uses it, and the error disappears upon commenting out "implementation 'com.folioreader:folioreader:0.5.4'".

    AndroidStudio 3.5 ext.kotlin_version = '1.3.41' classpath 'com.android.tools.build:gradle:3.5.0'.

    opened by zhirshya 13
  • app crash webViewPager has not been initialized

    app crash webViewPager has not been initialized

    11-29 17:12:46.300 14972-14972/ct.android.foliodemo E/InputEventReceiver: Exception dispatching input event. 11-29 17:12:46.300 14972-14972/ct.android.foliodemo E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback 11-29 17:12:46.302 14972-14972/ct.android.foliodemo E/MessageQueue-JNI: kotlin.UninitializedPropertyAccessException: lateinit property webViewPager has not been initialized at com.folioreader.view.FolioWebView.computeHorizontalScroll(FolioWebView.kt:392) at com.folioreader.view.FolioWebView.onTouchEvent(FolioWebView.kt:378) at android.view.View.dispatchTouchEvent(View.java:10062) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2781) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2413) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:435) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1836) at android.app.Activity.dispatchTouchEvent(Activity.java:3065) at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:397) at android.view.View.dispatchPointerEvent(View.java:10293) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5065) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4799) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4294) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4347) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4313) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4460) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4321) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4517) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4294) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4347) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4313) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4321) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4294) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7089) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7063) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7006) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7261) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:328) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:6338) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygo 11-29 17:12:46.303 14972-14972/ct.android.foliodemo D/AndroidRuntime: Shutting down VM 11-29 17:12:46.304 14972-14972/ct.android.foliodemo E/AndroidRuntime: FATAL EXCEPTION: main Process: ct.android.foliodemo, PID: 14972 kotlin.UninitializedPropertyAccessException: lateinit property webViewPager has not been initialized at com.folioreader.view.FolioWebView.computeHorizontalScroll(FolioWebView.kt:392) at com.folioreader.view.FolioWebView.onTouchEvent(FolioWebView.kt:378) at android.view.View.dispatchTouchEvent(View.java:10062) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2781) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2413) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2787) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2366) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:435) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1836) at android.app.Activity.dispatchTouchEvent(Activity.java:3065) at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:397) at android.view.View.dispatchPointerEvent(View.java:10293) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5065) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4799) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4294) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4347) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4313) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4460) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4321) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4517) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4294) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4347) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4313) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4321) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4294) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7089) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7063) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7006) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7261) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:328) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:6338) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1066) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:927)

    opened by cp-capsitech 13
  • App crashes when opening a book

    App crashes when opening a book

    Error details: java.util.zip.ZipException: Not a zip archive at java.util.zip.ZipFile.readCentralDir(ZipFile.java:397) at java.util.zip.ZipFile.(ZipFile.java:175) at java.util.zip.ZipFile.(ZipFile.java:142) at org.readium.r2.streamer.container.ContainerEpub.(ContainerEpub.kt:48) at org.readium.r2.streamer.parser.EpubParser.generateContainerFrom(EpubParser.kt:52) at org.readium.r2.streamer.parser.EpubParser.parse(EpubParser.kt:73) at com.folioreader.ui.folio.activity.FolioActivity.initBook(FolioActivity.java:458) at com.folioreader.ui.folio.activity.FolioActivity.setupBook(FolioActivity.java:432) at com.folioreader.ui.folio.activity.FolioActivity.onCreate(FolioActivity.java:283) at android.app.Activity.performCreate(Activity.java:6358) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2438) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2545) at android.app.ActivityThread.access$1100(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5602) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) 12-12 14:58:58.854 22578-22578/com.shulph.shulph E/FolioActivity: -> Failed to initialize book java.lang.NullPointerException: Attempt to invoke virtual method 'org.readium.r2.shared.Publication org.readium.r2.streamer.parser.PubBox.getPublication()' on a null object reference at com.folioreader.ui.folio.activity.FolioActivity.initBook(FolioActivity.java:469) at com.folioreader.ui.folio.activity.FolioActivity.setupBook(FolioActivity.java:432) at com.folioreader.ui.folio.activity.FolioActivity.onCreate(FolioActivity.java:283) at android.app.Activity.performCreate(Activity.java:6358) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2438) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2545) at android.app.ActivityThread.access$1100(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5602) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652) 12-12 14:59:01.062 826-959/? E/XTCC-5.1.0.9: [PosMgr] handlePosition failed: 12 12-12 14:59:02.239 22799-22915/? E/SntpClient: request time failed: java.net.SocketTimeoutException 12-12 14:59:02.916 22578-22578/com.shulph.shulph E/CrashlyticsCore: Failed to execute task. java.util.concurrent.TimeoutException at java.util.concurrent.FutureTask.get(FutureTask.java:177) at com.crashlytics.android.core.CrashlyticsBackgroundWorker.submitAndWait(CrashlyticsBackgroundWorker.java:41) at com.crashlytics.android.core.CrashlyticsController.handleUncaughtException(CrashlyticsController.java:320) at com.crashlytics.android.core.CrashlyticsController$6.onUncaughtException(CrashlyticsController.java:300) at com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:42) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693) at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690) 12-12 14:59:02.917 22578-22578/com.shulph.shulph E/AndroidRuntime: FATAL EXCEPTION: main Process: com.shulph.shulph, PID: 22578 java.lang.NullPointerException: Attempt to invoke interface method 'android.graphics.drawable.Drawable android.view.MenuItem.getIcon()' on a null object reference at com.folioreader.ui.folio.activity.FolioActivity.onCreateOptionsMenu(FolioActivity.java:356) at android.app.Activity.onCreatePanelMenu(Activity.java:2951) at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:378) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:94) at android.support.v7.app.AppCompatDelegateImpl$AppCompatWindowCallback.onCreatePanelMenu(AppCompatDelegateImpl.java:2549) at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:94) at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:455) at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:56) at android.os.Handler.handleCallback(Handler.java:742) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5602) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:774) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)

    opened by YadhuIleaf 12
  • Am I restricted to open epub files from raw and asset folder alone?

    Am I restricted to open epub files from raw and asset folder alone?

    I am developing an ebook reader app and everything works fine when i store the epub files on the assets or raw files. But it is not possible to download and files on the assets and raw folders so i am saving files in the internal storage so that the downloaded ebooks would not be accessed by any user or other apps but when i try to open the books with the internal storage file path folio reader crashes.

    Is this built to open only files in the assets and raw folders, if that is the case, please how can i make it open epub files that are stored on the mobile phone internal storage?

    Please help me i have been stuck here for days and can't find any solutions yet. Thanks

    opened by flxkalu 12
  • Crash on SearchActivity

    Crash on SearchActivity

    Issue / Feature - Issue FolioReader version - 0.4.2 FolioReader Stock / Modified - Stock Android SDK - 7.0 Mobile / Tablet / Emulator Info - Samsung Galaxy J7 (2016) Crash / Error - Crash

    Steps to reproduce / Describe in detail -

    App crash when I tap search. The library is included as module.

    Here is the message i get.

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.karv.lxphlaws/com.folioreader.ui.folio.activity.SearchActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.addOnLayoutChangeListener(android.view.View$OnLayoutChangeListener)' on a null object reference
                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984)
                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
                          at android.app.ActivityThread.-wrap14(ActivityThread.java)
                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
                          at android.os.Handler.dispatchMessage(Handler.java:102)
                          at android.os.Looper.loop(Looper.java:154)
                          at android.app.ActivityThread.main(ActivityThread.java:6776)
                          at java.lang.reflect.Method.invoke(Native Method)
                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.addOnLayoutChangeListener(android.view.View$OnLayoutChangeListener)' on a null object reference
                          at com.folioreader.ui.folio.activity.SearchActivity.init(SearchActivity.kt:113)
                          at com.folioreader.ui.folio.activity.SearchActivity.onCreate(SearchActivity.kt:106)
                          at android.app.Activity.performCreate(Activity.java:6956)
                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) 
                          at android.app.ActivityThread.-wrap14(ActivityThread.java) 
                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642) 
                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                          at android.os.Looper.loop(Looper.java:154) 
                          at android.app.ActivityThread.main(ActivityThread.java:6776) 
                          at java.lang.reflect.Method.invoke(Native Method) 
                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) 
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) 
    
    opened by losscommand 11
  • java.lang.NullPointerException:      at org.readium.r2_streamer.server.EpubServer.addLinks (EpubServer.java:68)

    java.lang.NullPointerException: at org.readium.r2_streamer.server.EpubServer.addLinks (EpubServer.java:68)

    private void addLinks(EpubPublication publication, String filePath) { containsMediaOverlay = false; for (Link link : publication.links) { if (link.rel.contains("media-overlay")) { containsMediaOverlay = true; link.href = link.href.replace("port", "localhost:" + getListeningPort() + filePath); } }

    Please Fix this Also

    opened by hackstarsj 11
  • Unable to open downloaded epub file

    Unable to open downloaded epub file

    Hello,

    when I open my downloaded epub file.

    var folioReader : FolioReader = FolioReader.get() folioReader.openBook(file.path)

    It's giving me this error.

    E/AndroidProtocolHandler: Unable to open asset URL: file:///android_asset/android.selection.js

    Can you please help me to fix this ?

    Thanks.

    opened by jayesh28589 10
  • Error when importing using Gradle

    Error when importing using Gradle

    When I try to import using Gradle I get this:

    /Users/mobile/.gradle/caches/transforms-1/files-1.1/folioreader-0.2.3.aar/79a625c2c7149e7fa5f1e9c550a5f7de/res/values/values.xml Error:(111, 5) style attribute '@android:attr/windowEnterAnimation' not found Error:(111, 5) style attribute '@android:attr/windowExitAnimation' not found Error:(115, 5) style attribute '@android:attr/windowEnterAnimation' not found Error:(115, 5) style attribute '@android:attr/windowExitAnimation' not found Error:(119, 5) style attribute '@android:attr/windowEnterAnimation' not found Error:(119, 5) style attribute '@android:attr/windowExitAnimation' not found Error:(123, 5) style attribute '@android:attr/windowEnterAnimation' not found Error:(123, 5) style attribute '@android:attr/windowExitAnimation' not found Error:(128, 5) style attribute '@android:attr/windowEnterAnimation' not found Error:(128, 5) style attribute '@android:attr/windowExitAnimation' not found Error:(132, 5) style attribute '@android:attr/windowEnterAnimation' not found Error:(132, 5) style attribute '@android:attr/windowExitAnimation' not found Error:(136, 5) style attribute '@android:attr/windowEnterAnimation' not found Error:(136, 5) style attribute '@android:attr/windowExitAnimation' not found /Users/mobile/Documents/RepositorioAplicaciones/aplicacionesinstitutopacifico/Tests/ActualidadGubernamental/app/src/main/res/values/styles.xml Error:(32, 5) style attribute '@android:attr/windowEnterAnimation' not found Error:(32, 5) style attribute '@android:attr/windowExitAnimation' not found Error:/Users/mobile/Documents/RepositorioAplicaciones/aplicacionesinstitutopacifico/Tests/ActualidadGubernamental/app/build/intermediates/incremental/mergePenalDebugResources/merged.dir/values/values.xml:1563 style attribute '@android:attr/windowEnterAnimation' not found Error:/Users/mobile/Documents/RepositorioAplicaciones/aplicacionesinstitutopacifico/Tests/ActualidadGubernamental/app/build/intermediates/incremental/mergePenalDebugResources/merged.dir/values/values.xml:1567 style attribute '@android:attr/windowEnterAnimation' not found Error:/Users/mobile/Documents/RepositorioAplicaciones/aplicacionesinstitutopacifico/Tests/ActualidadGubernamental/app/build/intermediates/incremental/mergePenalDebugResources/merged.dir/values/values.xml:1571 style attribute '@android:attr/windowEnterAnimation' not found Error:/Users/mobile/Documents/RepositorioAplicaciones/aplicacionesinstitutopacifico/Tests/ActualidadGubernamental/app/build/intermediates/incremental/mergePenalDebugResources/merged.dir/values/values.xml:1575 style attribute '@android:attr/windowEnterAnimation' not found Error:/Users/mobile/Documents/RepositorioAplicaciones/aplicacionesinstitutopacifico/Tests/ActualidadGubernamental/app/build/intermediates/incremental/mergePenalDebugResources/merged.dir/values/values.xml:1580 style attribute '@android:attr/windowEnterAnimation' not found Error:/Users/mobile/Documents/RepositorioAplicaciones/aplicacionesinstitutopacifico/Tests/ActualidadGubernamental/app/build/intermediates/incremental/mergePenalDebugResources/merged.dir/values/values.xml:1584 style attribute '@android:attr/windowEnterAnimation' not found Error:/Users/mobile/Documents/RepositorioAplicaciones/aplicacionesinstitutopacifico/Tests/ActualidadGubernamental/app/build/intermediates/incremental/mergePenalDebugResources/merged.dir/values/values.xml:1588 style attribute '@android:attr/windowEnterAnimation' not found Error:/Users/mobile/Documents/RepositorioAplicaciones/aplicacionesinstitutopacifico/Tests/ActualidadGubernamental/app/build/intermediates/incremental/mergePenalDebugResources/merged.dir/values/values.xml:1592 style attribute '@android:attr/windowEnterAnimation' not found Error:failed linking references Error:java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.AaptException: AAPT2 link failed: Error:com.android.builder.internal.aapt.AaptException: AAPT2 link failed: Error:Execution failed for task ':app:processPenalDebugResources'.

    Failed to execute aapt

    awaiting reply 
    opened by nandorrb 9
  • Location of search alogrithm in folioreader

    Location of search alogrithm in folioreader

    Query - Asking for the location of the search algorithm

    Describe in detail - I want to modify the search alogrithm . I want to know exactly where is the search happening in folio reader.

    opened by AnkitVerma8584 0
  • TTs not working on Samsung M30s

    TTs not working on Samsung M30s

    Issue / Feature - TTS not working FolioReader version - 0.5.4 FolioReader Stock / Modified -
    Android SDK - android 11 Mobile / Tablet / Emulator Info - Samsung M30s Crash / Error - Uncaught TypeError: Cannot read properties of null (reading 'innerText') [file:///android_asset/js/Bridge.js:206] Please help

    Steps to reproduce / Describe in detail -

    opened by SHAMSRIZWAN 0
  • Highlight certain text in epub

    Highlight certain text in epub

    Is there any way to highlight a certain text in the epub? For example, I want the word 'Mobby' to be highlighted, so I pass in the word when I open the epub file and all 'Mobby' word will be highlighted

    opened by percychin97 0
  • JavaScript jquery 3.1.1 SNYK-JS-JQUERY-174006 assets/js/jquery-3.1.1.min.js

    JavaScript jquery 3.1.1 SNYK-JS-JQUERY-174006 assets/js/jquery-3.1.1.min.js

    Issue / Feature - FolioReader version - 0.5.4 FolioReader Stock / Modified -
    Android SDK - Mobile / Tablet / Emulator Info -
    Crash / Error -

    Steps to reproduce / Describe in detail -

    used latest dependency and play-store show following warning

    Vulnerable JavaScript libraries: Name Version Known issues Identified files jquery 3.1.1 SNYK-JS-JQUERY-174006 assets/js/jquery-3.1.1.min.js

    opened by biswajitg123 1
  • Potrait Epub broken view, and Landscape it's safe view

    Potrait Epub broken view, and Landscape it's safe view

    Issue / Feature - Show Epub FolioReader version -
    FolioReader Stock / Modified -
    Android SDK - Mobile / Tablet / Emulator Info - Honor JAT AL00 Crash / Error - Error on View Potrait. but Landscape its safe

    Steps to reproduce / Describe in detail - I have a use case epub when Landscape so safe for displaying ebook, but Potrait is broken/ randomlay place view. So What's wrong about that case?

    opened by chondrosw 0
Releases(0.5.4)
Owner
FolioReader
The best ePub reader.
FolioReader
enjarify 8.6 0.0 L5 Python Enjarify is a tool for translating Dalvik bytecode to equivalent Java bytecode. This allows Java analysis tools to analyze Android applications.

Note: This repository may be out of date. Future development will occur at https://github.com/Storyyeller/enjarify. Introduction Enjarify is a tool fo

Google 2.7k Jan 8, 2023
CLI tool for decompiling Android apps to Java. It does resources! It does Java! Its real easy!

Easy-as-pie Android Decompiler Why One stop shop I got pretty tired of decompiling Android apps with a bunch of steps that I had to remember all the t

Alex Davis 619 Dec 27, 2022
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Cossack Labs 1.6k Dec 29, 2022
UNIX-like reverse engineering framework and command-line toolset

Radare2: The Libre Unix-Like Reverse Engineering Framework See the Releases page for downloads. The current git master branch is 5.7.7, next will be 5

radare org 17.4k Jan 9, 2023
Mobile Security Framework (MobSF)

Mobile Security Framework (MobSF) is an automated, all-in-one mobile application (Android/iOS/Windows) pen-testing, malware analysis and security assessment framework capable of performing static and dynamic analysis.

Mobile Security Framework 13.2k Jan 4, 2023
Grab’n Run, a simple and effective Java Library for Android projects to secure dynamic code loading.

Grab’n Run, a simple and effective Java Library for Android projects to secure dynamic code loading.

Luca Falsina 418 Dec 29, 2022
A program analysis tool to find cryptographic misuse in Java and Android.

A program analysis tool to find cryptographic misuse in Java and Android.

null 92 Dec 15, 2022
CRYLOGGER: Detecting Crypto Misuses for Android and Java Apps Dynamically

CRYLOGGER: Detecting Crypto Misuses for Android and Java Apps Dynamically

Luca Piccolboni 139 Dec 12, 2022
Signal Protocol library for Java/Android

Overview A ratcheting forward secrecy protocol that works in synchronous and asynchronous messaging environments. PreKeys This protocol uses a concept

Signal 1.8k Dec 24, 2022
Analyze any Android/Java based app or game

ClassyShark Introduction ClassyShark is a standalone binary inspection tool for Android developers. It can reliably browse any Android executable and

Google 7.2k Jan 3, 2023
Appdbg - make it possible to run android dex file in original Java Virtual Machine

Appdbg - make it possible to run android dex file in original Java Virtual Machine

null 137 Dec 20, 2022
Smali/baksmali is an assembler/disassembler for the dex format used by dalvik, Android's Java VM implementation

About smali/baksmali is an assembler/disassembler for the dex format used by dalvik, Android's Java VM implementation. The syntax is loosely based on

Ben Gruver 5.7k Dec 27, 2022
TweetNaCl in Java - a port of TweetNaCl-js

TweetNacl in Java: port of tweetnacl-js API/Usage Suggest always use TweetNaclFast implementation Public key authenticated encryption get key pair: Bo

AppNet.Link 40 Nov 10, 2022
Dex to Java decompiler

JADX jadx - Dex to Java decompiler Command line and GUI tools for producing Java source code from Android Dex and Apk files Main features: decompile D

null 32.8k Jan 2, 2023
Java bytecode obfuscator created by x4e.

Binscure Java bytecode obfuscator created by x4e. Usage First, create a config file, (example config here). When you have a config file, run binscure

null 35 Nov 22, 2022
A RSA Cipher implementation for Kotlin/Java

A RSA Cipher implementation for Kotlin/Java.

Lyzev 3 Aug 22, 2022
Find Security Bugs is the SpotBugs plugin for security audits of Java web applications

The SpotBugs plugin for security audits of Java web applications and Android applications. (Also work with Kotlin, Groovy and Scala projects)

OWASP Find Security Bugs 2k Jan 6, 2023
Catch common Java mistakes as compile-time errors

Error Prone Error Prone is a static analysis tool for Java that catches common programming mistakes at compile-time. public class ShortSet { public

Google 6.3k Dec 23, 2022
MiHawk 🦅👁️ is simple and secure 🔒 Android Library to store and retrieve pair of key-value data with encryption , internally it use jetpack DataStore Preferences 💽 to store data.

MiHawk MiHawk ?? ??️ is simple and secure ?? Android Library to store and retrieve pair of key-value data with encryption , internally it use jetpack

Nedal Hasan Ibrahem 5 Sep 3, 2022