[TIMOB-26182] An exception is raised when a remote image URL is set on an ImageView on some Android devices
GitHub Issue | n/a |
---|---|
Type | Bug |
Priority | Critical |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2018-09-17T20:15:14.000+0000 |
Affected Version/s | n/a |
Fix Version/s | Release 7.5.0 |
Components | Android |
Labels | regression |
Reporter | Gautier Drusch |
Assignee | Gary Mathews |
Created | 2018-07-03T07:49:14.000+0000 |
Updated | 2018-10-11T19:36:55.000+0000 |
Description
On one of our Android device, a native exception is raised when we set a remote URL on an ImageView (no problems with local URLs). Visually, no remote images are displayed on the app. If we turn on the storage permission on the device for our app, the images are displayed. This error happens only on SDKs 7.1 and more.
Here's the exception :
[ERROR] TiDrawableReference: (pool-6-thread-1) [46,103593] Problem opening stream with url [the URL]: /storage/emulated/0/Android/data/[the package name]/cache/_tmp/remote-cache/ec4d7d79f9e6687d490bf9eea8f8a779667ad14f.hdr: open failed: EACCES (Permission denied)
java.io.FileNotFoundException: /storage/emulated/0/Android/data/[the package name]/cache/_tmp/remote-cache/ec4d7d79f9e6687d490bf9eea8f8a779667ad14f.hdr: open failed: EACCES (Permission denied)
at libcore.io.IoBridge.open(IoBridge.java:452)
at java.io.FileInputStream.<init>(FileInputStream.java:76)
at java.io.FileReader.<init>(FileReader.java:42)
at org.appcelerator.titanium.util.TiResponseCache.readHeaders(TiResponseCache.java:351)
at org.appcelerator.titanium.util.TiResponseCache.get(TiResponseCache.java:338)
at com.android.okhttp.internal.huc.CacheAdapter.getJavaCachedResponse(CacheAdapter.java:103)
at com.android.okhttp.internal.huc.CacheAdapter.get(CacheAdapter.java:47)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:229)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
at java.net.URL.openStream(URL.java:470)
at org.appcelerator.titanium.util.TiFileHelper.handleNetworkURL(TiFileHelper.java:248)
at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:186)
at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:896)
at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:373)
at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:330)
at org.appcelerator.titanium.util.TiLoadImageManager$LoadImageJob.run(TiLoadImageManager.java:132)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: android.system.ErrnoException: open failed: EACCES (Permission denied)
at libcore.io.Posix.open(Native Method)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
at libcore.io.IoBridge.open(IoBridge.java:438)
... 22 more
Can you share your code and the url of the image of the problem. And does this only happen on certain domains, or all remote images?
master: https://github.com/appcelerator/titanium_mobile/pull/10153
FR Passed.
PR Merged.
Verified the fix on SDK 7.5.0.v20181010051919. Image displayed without any issue on with or without permission. Closing