ko2ic / image_downloader

Flutter plugin that downloads images and movies on the Internet and saves to Photo Library on iOS or specified directory on Android.
https://pub.dartlang.org/packages/image_downloader#-readme-tab-
MIT License
92 stars 115 forks source link

When downloading image app crashed - Error receiving broadcast Intent { act=android.intent.action.DOWNLOAD_COMPLETE #99

Open AjithRamsaran opened 3 years ago

AjithRamsaran commented 3 years ago

When downloading an image, seldom the app crashed on certain android mobiles(Ex. Samsung M11).

Code:

var imageId = await ImageDownloader.downloadImage(url,
        destination: AndroidDestinationType.directoryPictures
          ..subDirectory('outSource/' + url.split('/').last));

Error:

Fatal Exception: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.DOWNLOAD_COMPLETE flg=0x10 pkg=com.example.myapp (has extras) } in com.ko2ic.imagedownloader.a$c@4be88eb at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1656) at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(:2) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:7814) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)

Caused by android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0 at android.database.AbstractCursor.checkPosition(AbstractCursor.java:515) at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:138) at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:52) at android.database.CursorWrapper.getString(CursorWrapper.java:141) at com.ko2ic.imagedownloader.c$a.a(:102) at com.ko2ic.imagedownloader.c$a.a() at com.ko2ic.imagedownloader.c$a$c.a(:326) at com.ko2ic.imagedownloader.c$a$c.a() at com.ko2ic.imagedownloader.a.a(:277) at com.ko2ic.imagedownloader.a.a() at com.ko2ic.imagedownloader.a$c.onReceive(:30) at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1646) at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(:2) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:7814) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)

remi-martin commented 3 years ago

Same problem on Samsung A315G

await ImageDownloader.downloadImage("https://raw.githubusercontent.com/wiki/ko2ic/image_downloader/images/bigsize.jpg");
D/AndroidRuntime(24141): Shutting down VM
E/AndroidRuntime(24141): FATAL EXCEPTION: main
E/AndroidRuntime(24141): Process: com.remi.test_piwigo, PID: 24141
E/AndroidRuntime(24141): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.DOWNLOAD_COMPLETE flg=0x10 pkg=com.remi.test_piwigo (has extras) } in com.ko2ic.imagedownloader.Downloader$execute$1@d3758c2
E/AndroidRuntime(24141):    at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1656)
E/AndroidRuntime(24141):    at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(Unknown Source:2)
E/AndroidRuntime(24141):    at android.os.Handler.handleCallback(Handler.java:883)
E/AndroidRuntime(24141):    at android.os.Handler.dispatchMessage(Handler.java:100)
E/AndroidRuntime(24141):    at android.os.Looper.loop(Looper.java:237)
E/AndroidRuntime(24141):    at android.app.ActivityThread.main(ActivityThread.java:8167)
E/AndroidRuntime(24141):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(24141):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
E/AndroidRuntime(24141):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
E/AndroidRuntime(24141): Caused by: java.io.FileNotFoundException: /storage/emulated/0/Download/2021-05-06.13.19.015: open failed: EACCES (Permission denied)
E/AndroidRuntime(24141):    at libcore.io.IoBridge.open(IoBridge.java:496)
E/AndroidRuntime(24141):    at java.io.FileInputStream.<init>(FileInputStream.java:159)
E/AndroidRuntime(24141):    at com.ko2ic.imagedownloader.ImageDownloaderPlugin$CallbackImpl$granted$3.invoke(ImageDownloaderPlugin.kt:281)
E/AndroidRuntime(24141):    at com.ko2ic.imagedownloader.ImageDownloaderPlugin$CallbackImpl$granted$3.invoke(ImageDownloaderPlugin.kt:200)
E/AndroidRuntime(24141):    at com.ko2ic.imagedownloader.Downloader.resolveDownloadStatus(Downloader.kt:171)
E/AndroidRuntime(24141):    at com.ko2ic.imagedownloader.Downloader.access$resolveDownloadStatus(Downloader.kt:14)
E/AndroidRuntime(24141):    at com.ko2ic.imagedownloader.Downloader$execute$1.onReceive(Downloader.kt:33)
E/AndroidRuntime(24141):    at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1646)
E/AndroidRuntime(24141):    ... 8 more
E/AndroidRuntime(24141): Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
E/AndroidRuntime(24141):    at libcore.io.Linux.open(Native Method)
E/AndroidRuntime(24141):    at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
E/AndroidRuntime(24141):    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252)
E/AndroidRuntime(24141):    at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
E/AndroidRuntime(24141):    at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8044)
E/AndroidRuntime(24141):    at libcore.io.IoBridge.open(IoBridge.java:482)
E/AndroidRuntime(24141):    ... 15 more
I/Process (24141): Sending signal. PID: 24141 SIG: 9
ceosss commented 3 years ago

Facing same, Any solution?

AjithRamsaran commented 3 years ago

@ceosss No bro

manojeeva commented 3 years ago

Me Too Same Adding android:requestLegacyExternalStorage="true" shows warning in google play console.

vinicius-gregorio commented 2 years ago

Facing same here, on Xiaomi MI 9 SE. Any solution?

wmfadel commented 2 years ago

Still nothing on this?

ataolbalkar commented 2 years ago

I recently faced the same issue. I added android:requestLegacyExternalStorage="true" to android/app/src/main/AndroidManifest.xml like this:

<application
        android:requestLegacyExternalStorage="true"
        ...
</application>

That solved my issue on Android. But app kept crushing on iOS. Adding following definitions on ios/Runner/Info.plist solved the crashing issue for iOS:

<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
    </dict>
</dict>

ref: https://stackoverflow.com/a/32631185

Hope it helps you too.

luongcuong244 commented 2 months ago

It may be late, I was facing it when I downloaded multiple images in a row, but I have already fixed this crash. Changed the way this library is imported from:

  dependencies:
    image_downloader: ^0.31.0

to:

  dependencies:
    image_downloader:
      git:
        url: https://github.com/luongcuong244/image_downloader