{ "id": "152675", "key": "TIMOB-19899", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "16997", "name": "Release 5.2.0", "archived": false, "released": true, "releaseDate": "2016-02-23" } ], "resolution": { "id": "3", "description": "The problem is a duplicate of an existing issue.", "name": "Duplicate" }, "resolutiondate": "2016-02-09T12:42:53.000+0000", "created": "2015-11-05T16:05:08.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "android" ], "versions": [ { "id": "14826", "description": "Release 5.1.0-remaining iOS9 features, Android M features", "name": "Release 5.1.0", "archived": false, "released": true, "releaseDate": "2015-11-20" }, { "id": "17072", "name": "Release 5.1.2", "archived": false, "released": true, "releaseDate": "2016-01-12" }, { "id": "17532", "name": "Release 5.1.1", "archived": false, "released": true, "releaseDate": "2015-11-24" } ], "issuelinks": [ { "id": "50060", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "153624", "key": "TIMOB-20103", "fields": { "summary": "Remote images aren't loading on Android 6 ", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "50632", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "inwardIssue": { "id": "154419", "key": "TIMOB-20251", "fields": { "summary": "Android 6.0: java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "50302", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "154317", "key": "TIMOB-20235", "fields": { "summary": "Android 6.0: requestStoragePermission is needed for various use cases", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "updated": "2016-02-18T09:13:58.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "Android 6 doesn't load images from a remote url, while Android 5 works fine. All of the following 4 are not shown on Android 6.\r\n\r\n{code:javascript}\r\nvar win = Ti.UI.createWindow();\r\n\r\nvar view = Ti.UI.createScrollView({\r\n\tscrollType: 'vertical',\r\n\tlayout: 'vertical'\r\n});\r\n\r\nview.add(Ti.UI.createLabel({\r\n\ttext: 'Remote HTTPS from AppC'\r\n}));\r\nview.add(Ti.UI.createImageView({\r\n\timage: 'https://www.appcelerator.com/wp-content/themes/appc-rwd/assets/media/images/logo.png'\r\n}));\r\n\r\nview.add(Ti.UI.createLabel({\r\n\ttext: 'Remote HTTP from AppC'\r\n}));\r\nview.add(Ti.UI.createImageView({\r\n\timage: 'http://www.appcelerator.com/wp-content/themes/appc-rwd/assets/media/images/logo.png'\r\n}));\r\n\r\nview.add(Ti.UI.createLabel({\r\n\ttext: 'Remote HTTPS from CloudFront'\r\n}));\r\nview.add(Ti.UI.createImageView({\r\n\timage: 'https://cfimagesstaging.zipwire.com/56325c2e7dec0.jpg'\r\n}));\r\n\r\nview.add(Ti.UI.createLabel({\r\n\ttext: 'Remote HTTP from CloudFront'\r\n}));\r\nview.add(Ti.UI.createImageView({\r\n\timage: 'http://cfimagesstaging.zipwire.com/56325c2e7dec0.jpg'\r\n}));\r\n\r\nwin.add(view);\r\nwin.open();\r\n{code}\r\n\r\nadb logcat shows a failing TiDownloader request:\r\n\r\n{noformat}\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: (pool-2-thread-1) [100607,100607] Exception downloading https://cfimagesstaging.zipwire.com/56325c2e7dec0.jpg\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.zipwire.test/cache/_tmp/remote-cache/5b7624468b64d5e3153101a30a50891c94dace39.hdr: open failed: ENOENT (No such file or directory)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:452)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:87)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:72)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat java.io.FileWriter.(FileWriter.java:42)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiResponseCache.put(TiResponseCache.java:472)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat com.android.okhttp.internal.huc.CacheAdapter.put(CacheAdapter.java:57)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.maybeCache(HttpEngine.java:554)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:826)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat java.net.URL.openStream(URL.java:470)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiDownloadManager$DownloadJob.run(TiDownloadManager.java:135)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat java.lang.Thread.run(Thread.java:818)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat libcore.io.Posix.open(Native Method)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:438)\r\n11-05 16:26:13.015 23434 23480 E TiDownloadManager: \t... 17 more\r\n{noformat}\r\n\r\nI searched and found this Java issue:\r\n\r\nhttp://bugs.java.com/bugdatabase/view_bug.do?bug_id=4620571\r\n\r\nIt seems like Java can't handle a protocol redirect. I am just checking if we do this for images.", "attachment": [ { "id": "57344", "filename": "android_20151110-115315.png", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-10T10:57:31.000+0000", "size": 106853, "mimeType": "image/png" }, { "id": "57275", "filename": "android 5 .png", "author": { "name": "aislam", "key": "aislam", "displayName": "Aminul Islam", "active": false, "timeZone": "Etc/GMT-6" }, "created": "2015-11-06T11:02:17.000+0000", "size": 31608, "mimeType": "image/png" }, { "id": "57274", "filename": "android 6.png", "author": { "name": "aislam", "key": "aislam", "displayName": "Aminul Islam", "active": false, "timeZone": "Etc/GMT-6" }, "created": "2015-11-06T11:02:17.000+0000", "size": 18180, "mimeType": "image/png" }, { "id": "57345", "filename": "Screenshot_20151110-114826.png", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-10T11:13:32.000+0000", "size": 45377, "mimeType": "image/png" } ], "flagged": false, "summary": "Android 6: Remote images not loading", "creator": { "name": "janruehling", "key": "janruehling", "displayName": "Jan Ruehling", "active": true, "timeZone": "Europe/Madrid" }, "subtasks": [], "reporter": { "name": "janruehling", "key": "janruehling", "displayName": "Jan Ruehling", "active": true, "timeZone": "Europe/Madrid" }, "environment": "SDK: 5.1.0.v20151104073721\r\nCLI: 5.0.5\r\nNode: 4.1.0\r\nnpm: 2.14.3\r\nClassic Titanium, No Studio", "closedSprints": [ { "id": 580, "state": "closed", "name": "2016 Sprint 3 SDK", "startDate": "2016-01-30T01:31:48.991Z", "endDate": "2016-02-13T01:31:00.000Z", "completeDate": "2016-02-15T05:32:40.725Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "369163", "author": { "name": "aislam", "key": "aislam", "displayName": "Aminul Islam", "active": false, "timeZone": "Etc/GMT-6" }, "body": "Hi , \r\nI tested this issue and experienced the same behaviour as the reporter. This a valid issue.Remote images from secure url not loaded on android 6 , but it's load fine on android 5. Find the attached screenshot .\r\n*Environment*\r\n{code}\r\nOperating System\r\n Name = Mac OS X\r\n Version = 10.10.5\r\n Architecture = 64bit\r\n # CPUs = 4\r\n Memory = 8589934592\r\nNode.js\r\n Node.js Version = 0.10.37\r\n npm Version = 1.4.28\r\nTitanium CLI\r\n CLI Version = 5.0.5\r\nTitanium SDK\r\n SDK Version = 5.1.0.v20151104190037\r\n SDK Path = /Users/Library/Application Support/Titanium/mobilesdk/osx/5.1.0.v20151104190037\r\n Target Platform = android\r\n{code}\r\n\r\n!android 5 .png|thumbnail! !android 6.png|thumbnail!", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-06T06:00:14.000+0000", "updated": "2015-11-10T11:03:55.000+0000" }, { "id": "369171", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~shossain] I wonder if this is related to TIMOB-11863 and not the secure URL but the redirect is the problem?", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-06T08:07:53.000+0000", "updated": "2015-11-10T10:58:47.000+0000" }, { "id": "369178", "author": { "name": "janruehling", "key": "janruehling", "displayName": "Jan Ruehling", "active": true, "timeZone": "Europe/Madrid" }, "body": "I checked back with our backend guy and he said that there is no redirect. I tried both https and http and it fails for both. The code snippet was after my second try ... sorry about that.\r\n\r\nThe images are served via CloudFront ... \r\n\r\nThis is tested on actual devices: Nexus 4 with latest Android 5, Nexus 7 with latest Android 6.", "updateAuthor": { "name": "janruehling", "key": "janruehling", "displayName": "Jan Ruehling", "active": true, "timeZone": "Europe/Madrid" }, "created": "2015-11-06T10:26:23.000+0000", "updated": "2015-11-06T10:27:51.000+0000" }, { "id": "369453", "author": { "name": "janruehling", "key": "janruehling", "displayName": "Jan Ruehling", "active": true, "timeZone": "Europe/Madrid" }, "body": "I just tested again:\r\n\r\nLocal images load on Android 6 (a single jpg loaded from Resources/images/ ) both on sdk 5.0.2.GA and 5.1.0.v20151104073721.\r\n\r\nANY remote image fails to load on Android 6 on both sdk'. I tried random images from Google image search ... to be sure that it is not our server setup.", "updateAuthor": { "name": "janruehling", "key": "janruehling", "displayName": "Jan Ruehling", "active": true, "timeZone": "Europe/Madrid" }, "created": "2015-11-09T21:18:48.000+0000", "updated": "2015-11-09T21:18:48.000+0000" }, { "id": "369534", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "OK, weird... I just updated the sample and tested with:\r\n\r\n* Titanium 5.0.2.GA and Android 5.1.0 via Genymotion: All OK\r\n* Titanium 5.1.0.RC and Android 5.1.0 via Genymotion: All OK\r\n* Titanium 5.0.2.GA and Android 6.0 on Nexus 5: All OK\r\n* Titanium 5.1.0.RC and Android 6.0 on Nexus 5: All OK\r\n\r\nIn other words... cannot reproduce with:\r\n\r\n* android 6.0 (3.4.0-g2aa165e)\r\n* jdk1.8.0_60\r\n* build-tools 23.0.1.\r\n* node v0.12.7, 4.2.2\r\n* mac os x 10.11.1\r\n\r\n!android_20151110-115315.png|thumbnail!", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-10T10:39:46.000+0000", "updated": "2015-11-10T11:16:28.000+0000" }, { "id": "369535", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~aislam] could you try again with the updated sample to see if it still doesn't work for you (since it does work for me) and if so drop the specs of your device, os, jdk here to compare with mine and [~janruehling] (where the updated sample fails still)", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2015-11-10T10:58:08.000+0000", "updated": "2015-11-10T10:59:46.000+0000" }, { "id": "369536", "author": { "name": "janruehling", "key": "janruehling", "displayName": "Jan Ruehling", "active": true, "timeZone": "Europe/Madrid" }, "body": "A few more infos to help troubleshooting:\r\n\r\n- device: Nexus 7 2013\r\n- os version (Kernel): 3.4.0-ga5a4133 (android-build@wpix7.hot.corp.google.com #1 -- Mon Aug 17 21:50:19 UTC 2015) \r\n- mac os version: 10.11.1\r\n- java version: 1.8.0_60\r\n- android build tools version: 23.0.1\r\n- titanium SDK: 5.1.0.v20151104073721\r\n- titanium CLI: 5.0.5\r\n- nodejs version: 0.12.7, 4.1.0, 4.2.0\r\n- npm version: 2.14.3\r\n\r\n!Screenshot_20151110-114826.png|thumbnail!\r\n\r\nUpdate: I just tried the emulator with Android 6 -- the images showed up", "updateAuthor": { "name": "janruehling", "key": "janruehling", "displayName": "Jan Ruehling", "active": true, "timeZone": "Europe/Madrid" }, "created": "2015-11-10T11:07:15.000+0000", "updated": "2015-11-10T11:29:12.000+0000" }, { "id": "369541", "author": { "name": "janruehling", "key": "janruehling", "displayName": "Jan Ruehling", "active": true, "timeZone": "Europe/Madrid" }, "body": "Another dump ... maybe it helps. It always fails in the TiDownloadManager I think:\r\n\r\n{code}\r\n[jan@mbp ~/Development/Titanium/com.zipwire.test]$ adb logcat | grep 1044\r\n11-10 13:30:22.047 623 3752 I ActivityManager: Start proc 1044:com.zipwire.test/u0a100 for activity com.zipwire.test/.ComZipwireTestActivity\r\n11-10 13:30:22.108 1044 1044 I TiApplication: (main) [0,0] checkpoint, app created.\r\n11-10 13:30:22.207 1044 1044 I TiApplication: (main) [100,100] Titanium 5.1.0 (2015/11/04 07:37 8da9864)\r\n11-10 13:30:22.268 1044 1066 E linker : readlink('/proc/self/fd/19') failed: Permission denied [fd=19]\r\n11-10 13:30:22.269 1044 1066 E linker : warning: unable to get realpath for the library \"/data/app/com.zipwire.test-1/lib/arm/libstlport_shared.so\". Will use given name.\r\n11-10 13:30:22.275 1044 1066 E linker : readlink('/proc/self/fd/19') failed: Permission denied [fd=19]\r\n11-10 13:30:22.275 1044 1066 E linker : warning: unable to get realpath for the library \"/data/app/com.zipwire.test-1/lib/arm/libkroll-v8.so\". Will use given name.\r\n11-10 13:30:22.357 1044 1044 I TiApplication: (main) [150,250] Titanium Javascript runtime: v8\r\n11-10 13:30:22.394 1044 1044 I TiRootActivity: (main) [0,0] checkpoint, on root activity create, savedInstanceState: null\r\n11-10 13:30:22.430 1044 1044 W TiTempFileHelper: (main) [36,36] The external temp directory doesn't exist, skipping cleanup\r\n11-10 13:30:22.502 1044 1066 W V8Object: (KrollRuntimeThread) [72,108] Runtime disposed, cannot set property 'userAgent'\r\n11-10 13:30:22.706 1044 1044 I TiRootActivity: (main) [0,0] checkpoint, on root activity resume. activity = com.zipwire.test.ComZipwireTestActivity@731930c\r\n11-10 13:30:22.760 1044 1096 D OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true\r\n11-10 13:30:22.918 1044 1096 I Adreno-EGL: : QUALCOMM Build: 09/02/15, 76f806e, Ibddc658e36\r\n11-10 13:30:22.919 1044 1096 E linker : readlink('/proc/self/fd/30') failed: Permission denied [fd=30]\r\n11-10 13:30:22.919 1044 1096 E linker : warning: unable to get realpath for the library \"/vendor/lib/egl/eglsubAndroid.so\". Will use given name.\r\n11-10 13:30:22.937 1044 1096 I OpenGLRenderer: Initialized EGL, version 1.4\r\n11-10 13:30:23.572 1044 1066 D Window : Checkpoint: postWindowCreated()\r\n11-10 13:30:55.417 1044 1423 I APSAnalyticsService: Analytics Service Started\r\n11-10 13:31:00.534 1044 1423 I APSAnalyticsService: Stopping Analytics Service\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: (pool-2-thread-1) [38511,38511] Exception downloading https://www.appcelerator.com/wp-content/themes/appc-rwd/assets/media/images/logo.png\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.zipwire.test/cache/_tmp/remote-cache/4f14bf197f5cf2336bffd929ce1247b51ee0b036.hdr: open failed: ENOENT (No such file or directory)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:452)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:87)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:72)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat java.io.FileWriter.(FileWriter.java:42)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiResponseCache.put(TiResponseCache.java:472)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat com.android.okhttp.internal.huc.CacheAdapter.put(CacheAdapter.java:57)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.maybeCache(HttpEngine.java:554)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:826)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat java.net.URL.openStream(URL.java:470)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiDownloadManager$DownloadJob.run(TiDownloadManager.java:135)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat java.lang.Thread.run(Thread.java:818)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat libcore.io.Posix.open(Native Method)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:438)\r\n11-10 13:31:01.240 1044 1139 E TiDownloadManager: \t... 17 more\r\n{code}", "updateAuthor": { "name": "janruehling", "key": "janruehling", "displayName": "Jan Ruehling", "active": true, "timeZone": "Europe/Madrid" }, "created": "2015-11-10T12:39:52.000+0000", "updated": "2015-11-10T12:39:52.000+0000" }, { "id": "371874", "author": { "name": "velan", "key": "velan", "displayName": "Velan Vijatovic", "active": true, "timeZone": "Asia/Tokyo" }, "body": "Same error here. Tried in my current project and created a brand new project just to make sure.\r\n\r\nAndroid 6.0\r\n!http://i.imgur.com/Up0E6Tl.png|width=300,height=400!\r\n\r\nAndroid 5.0\r\n!http://i.imgur.com/ENgvE5A.png|width=300,height=400!\r\n\r\n* device: Genymotion Android 6.0 simulator, Android Stock 6.0 simulator\r\n* mac os version: 10.11.1\r\n* java version: 1.8.0_45\r\n* android build tools version: 23.0.2\r\n* titanium SDK: 5.1.0.GA\r\n* CLI Version: 5.0.4\r\n* Node.js Version: 5.1.0\r\n* npm Version: 3.3.12\r\n\r\n\r\n{code}\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: (pool-2-thread-2) [1246,1246] Exception downloading http://www.appcelerator.com/wp-content/themes/appc-rwd/assets/media/images/logo.png\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.kabotip.imageTest/cache/_tmp/remote-cache/72d5d77f45c43a5fb8c6e55251aae86c40ed9827.hdr: open failed: ENOENT (No such file or directory)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:452)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:87)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:72)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat java.io.FileWriter.(FileWriter.java:42)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiResponseCache.put(TiResponseCache.java:472)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.huc.CacheAdapter.put(CacheAdapter.java:57)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.maybeCache(HttpEngine.java:554)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:826)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat java.net.URL.openStream(URL.java:470)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiDownloadManager$DownloadJob.run(TiDownloadManager.java:135)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat java.lang.Thread.run(Thread.java:818)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat libcore.io.Posix.open(Native Method)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:438)\r\n12-02 01:26:22.612 6152 6173 E TiDownloadManager: \t... 15 more\r\n12-02 01:26:26.999 3363 4194 D NetlinkSocketObserver: NeighborEvent{elapsedMs=22909437, 10.0.3.2, [525400123502], RTM_NEWNEIGH, NUD_REACHABLE}\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: (pool-2-thread-1) [16776,18022] Exception downloading https://www.appcelerator.com/wp-content/themes/appc-rwd/assets/media/images/logo.png\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.kabotip.imageTest/cache/_tmp/remote-cache/4f14bf197f5cf2336bffd929ce1247b51ee0b036.hdr: open failed: ENOENT (No such file or directory)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:452)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:87)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:72)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat java.io.FileWriter.(FileWriter.java:42)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiResponseCache.put(TiResponseCache.java:472)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.huc.CacheAdapter.put(CacheAdapter.java:57)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.maybeCache(HttpEngine.java:554)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:826)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat java.net.URL.openStream(URL.java:470)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiDownloadManager$DownloadJob.run(TiDownloadManager.java:135)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat java.lang.Thread.run(Thread.java:818)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat libcore.io.Posix.open(Native Method)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:438)\r\n12-02 01:26:39.388 6152 6172 E TiDownloadManager: \t... 17 more\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: (pool-2-thread-2) [5772,23794] Exception downloading https://cfimagesstaging.zipwire.com/56325c2e7dec0.jpg\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.kabotip.imageTest/cache/_tmp/remote-cache/5b7624468b64d5e3153101a30a50891c94dace39.hdr: open failed: ENOENT (No such file or directory)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:452)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:87)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:72)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat java.io.FileWriter.(FileWriter.java:42)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiResponseCache.put(TiResponseCache.java:472)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.huc.CacheAdapter.put(CacheAdapter.java:57)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.maybeCache(HttpEngine.java:554)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:826)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat java.net.URL.openStream(URL.java:470)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiDownloadManager$DownloadJob.run(TiDownloadManager.java:135)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat java.lang.Thread.run(Thread.java:818)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat libcore.io.Posix.open(Native Method)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:438)\r\n12-02 01:26:45.160 6152 6173 E TiDownloadManager: \t... 17 more\r\n12-02 01:26:53.836 6152 6181 I APSAnalyticsService: Analytics Service Started\r\n12-02 01:26:54.889 6152 6181 I APSAnalyticsService: Stopping Analytics Service\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: (pool-2-thread-1) [15483,39277] Exception downloading http://cfimagesstaging.zipwire.com/56325c2e7dec0.jpg\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.kabotip.imageTest/cache/_tmp/remote-cache/36c843f98b533925b44a2405131158e27ad218fd.hdr: open failed: ENOENT (No such file or directory)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:452)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:87)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:72)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat java.io.FileWriter.(FileWriter.java:42)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiResponseCache.put(TiResponseCache.java:472)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.huc.CacheAdapter.put(CacheAdapter.java:57)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.maybeCache(HttpEngine.java:554)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:826)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:439)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat java.net.URL.openStream(URL.java:470)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat org.appcelerator.titanium.util.TiDownloadManager$DownloadJob.run(TiDownloadManager.java:135)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat java.lang.Thread.run(Thread.java:818)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat libcore.io.Posix.open(Native Method)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:438)\r\n12-02 01:27:00.643 6152 6172 E TiDownloadManager: \t... 15 more\r\n12-02 01:27:15.671 3044 3354 E NetlinkEvent: NetlinkEvent::FindParam(): Parameter 'UID' not found\r\n12-02 01:27:23.351 3363 4194 D NetlinkSocketObserver: NeighborEvent{elapsedMs=22965788, 10.0.3.2, [525400123502], RTM_NEWNEIGH, NUD_STALE}\r\n{code}", "updateAuthor": { "name": "velan", "key": "velan", "displayName": "Velan Vijatovic", "active": true, "timeZone": "Asia/Tokyo" }, "created": "2015-12-02T06:42:55.000+0000", "updated": "2015-12-02T06:51:06.000+0000" }, { "id": "371882", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "Error occurs because of this \r\n`11-05 16:26:13.015 23434 23480 E TiDownloadManager: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.zipwire.test/cache/_tmp/remote-cache/5b7624468b64d5e3153101a30a50891c94dace39.hdr: open failed: ENOENT (No such file or directory)` \r\nIt's trying to write into storage for cache. It fails in Android 6.0 cause of the new permission system.\r\n\r\nQuick fix is to go to the Settings>Apps>YourApp>Permissions and enable Storage.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-12-02T07:32:10.000+0000", "updated": "2015-12-02T07:39:05.000+0000" }, { "id": "371887", "author": { "name": "velan", "key": "velan", "displayName": "Velan Vijatovic", "active": true, "timeZone": "Asia/Tokyo" }, "body": "Thanks for your help Ashraf!\r\n\r\nI'm not using Titanium Studio so not sure what I need to modify. I already have\r\n{code}\r\n\r\n{code}\r\nin my tiapp.xmp", "updateAuthor": { "name": "velan", "key": "velan", "displayName": "Velan Vijatovic", "active": true, "timeZone": "Asia/Tokyo" }, "created": "2015-12-02T07:57:12.000+0000", "updated": "2015-12-02T07:57:12.000+0000" }, { "id": "371890", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~velan] Besides setting the permission in the manifest, you would need to ask for permission again from the user in Android 6.0\r\nhttp://developer.android.com/training/permissions/requesting.html\r\n\r\nAs mentioned earlier one band-aid is to do: Go to the Settings>Apps>YourApp>Permissions and enable Storage.\r\nBut that's something the enduser needs to do.\r\n\r\nThis is an issue that needs to be addressed. Current image loading logic does not support for this permission requesting in Android 6.0.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-12-02T08:04:44.000+0000", "updated": "2015-12-02T08:04:44.000+0000" }, { "id": "371891", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-12-02T08:13:59.000+0000", "updated": "2015-12-02T08:20:10.000+0000" }, { "id": "371892", "author": { "name": "velan", "key": "velan", "displayName": "Velan Vijatovic", "active": true, "timeZone": "Asia/Tokyo" }, "body": "Oh misunderstood it was on the device. It does indeed work when I manually change the permissions in the settings.\r\n\r\nSo to be clear there's nothing I can do to make my app work on an Android 6 device right now? Would it work if I downgrade to SDK 5.0.0 and build tools v22?\r\nDo you know if this issue is being worked on somewhere?\r\n\r\nThanks a lot for your help!\r\n\r\nP.S: Just saw your message, will try!", "updateAuthor": { "name": "velan", "key": "velan", "displayName": "Velan Vijatovic", "active": true, "timeZone": "Asia/Tokyo" }, "created": "2015-12-02T08:18:57.000+0000", "updated": "2015-12-02T08:20:09.000+0000" }, { "id": "371894", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "Yup. I just edited the code as well.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-12-02T08:21:09.000+0000", "updated": "2015-12-02T08:21:09.000+0000" }, { "id": "371897", "author": { "name": "velan", "key": "velan", "displayName": "Velan Vijatovic", "active": true, "timeZone": "Asia/Tokyo" }, "body": "You're a lifesaver! Awesome!", "updateAuthor": { "name": "velan", "key": "velan", "displayName": "Velan Vijatovic", "active": true, "timeZone": "Asia/Tokyo" }, "created": "2015-12-02T08:28:22.000+0000", "updated": "2015-12-02T08:28:22.000+0000" }, { "id": "371899", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~velan] No problem. \r\n\r\nBut this issue probably needs some working and love so that you don't need to use that workaround.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-12-02T08:34:13.000+0000", "updated": "2015-12-02T08:34:13.000+0000" }, { "id": "372383", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "Added an alternative workaround in TIMOB-20103 if anyone is interested to look into that.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-12-08T03:45:38.000+0000", "updated": "2015-12-08T03:45:38.000+0000" }, { "id": "373597", "author": { "name": "engross", "key": "engross", "displayName": "Dongwoo Gim", "active": true, "timeZone": "Asia/Seoul" }, "body": "I've created a module temporarily.\r\n\r\nhttps://github.com/gimdongwoo/Ti-Android-RequestStoragePermission", "updateAuthor": { "name": "engross", "key": "engross", "displayName": "Dongwoo Gim", "active": true, "timeZone": "Asia/Seoul" }, "created": "2015-12-29T09:20:01.000+0000", "updated": "2015-12-29T09:20:01.000+0000" }, { "id": "373646", "author": { "name": "thebrousse", "key": "thebrousse", "displayName": "Christian Brousseau", "active": true, "timeZone": "Europe/Berlin" }, "body": "Titanium 5.0.2.RC is out and this fix isn't in fixed yet. Can we assume it will be done by the time GA comes out?", "updateAuthor": { "name": "thebrousse", "key": "thebrousse", "displayName": "Christian Brousseau", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-12-31T00:27:15.000+0000", "updated": "2015-12-31T00:27:15.000+0000" }, { "id": "373688", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~engross] That's cool. You could use that but I think just writing it in Javascript is doable as well.\r\n\r\n[~thebrousse] Are you using the workaround?", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-01-04T02:11:29.000+0000", "updated": "2016-01-04T02:11:29.000+0000" }, { "id": "374519", "author": { "name": "bgrantges@appcelerator.com", "key": "bgrantges", "displayName": "Bert Grantges", "active": false, "timeZone": "America/Chicago" }, "body": "The fix for this is to actually specify the write permission for external storage within the tiapp.xml.\r\n\r\n{code}\r\n\r\n{code}\r\n\r\nAlso, per the Android documentation, reading from external storage will also require a permission tag as well. \r\n\r\n{code}\r\n\r\n{code}\r\n\r\nThis is documented here:\r\nhttp://developer.android.com/training/basics/data-storage/files.html\r\n\r\nAdding the Camera privilege can work since it requires storage access, but isn't necessary. Using the above works just fine.\r\n", "updateAuthor": { "name": "bgrantges@appcelerator.com", "key": "bgrantges", "displayName": "Bert Grantges", "active": false, "timeZone": "America/Chicago" }, "created": "2016-01-14T04:40:55.000+0000", "updated": "2016-01-14T04:40:55.000+0000" }, { "id": "374523", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~bgrantges@appcelerator.com] What you mention is true. Though it needs to ask for permissions at runtime as well.\r\n\r\nFrom Android 6.0 and above, permissions have to be requested at run time as well as adding it to the manifest.\r\n\r\nRefer to: http://developer.android.com/training/permissions/requesting.html\r\n\r\nThis is why we need the `requestCameraPermissions` at runtime.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-01-14T04:59:14.000+0000", "updated": "2016-01-14T04:59:14.000+0000" }, { "id": "374526", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "Created a jira ticket to provide for method to request for storage permission. TIMOB-20235", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-01-14T05:06:14.000+0000", "updated": "2016-01-14T05:06:14.000+0000" }, { "id": "374662", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "I don't think TIMOB-20235 is the way to resolve this ticket because you don't want an app that just uses some remote images to prompt (in Android 6.0+) the user for run-time permission to external storage.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-01-15T08:23:15.000+0000", "updated": "2016-01-15T08:23:15.000+0000" }, { "id": "374664", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~fokkezb] It's not the best way.\r\n\r\nRemote images (logic) will need to be addressed in a way that storage isn't used. ", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-01-15T08:31:02.000+0000", "updated": "2016-01-15T08:31:02.000+0000" }, { "id": "375729", "author": { "name": "mbiel", "key": "mbiel", "displayName": "Marcus Biel", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I Think this is a really severe Bug.\r\nOur app is using a lot of remote images and besides the fact that it's not a solution to prompt the users for permission to show content, it seems like the app tries to download the images all the time. This is causing a major dataleak / excessive datausage (3x-4x compared to Android 5).\r\n\r\nconsole output:\r\n\r\n{noformat}\r\n[ERROR] : TiDownloadManager: (pool-5-thread-2) [37045,42502] Exception downloading http://images.cgames.de/images/idgwpgsgp/bdb/2734717/368x207.jpg\r\n[ERROR] : TiDownloadManager: java.net.ConnectException: failed to connect to images.cgames.de/2.17.123.58 (port 80): connect failed: ENETUNREACH (Network is unreachable)\r\n[ERROR] : TiDownloadManager: \tat libcore.io.IoBridge.connect(IoBridge.java:124)\r\n[ERROR] : TiDownloadManager: \tat java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)\r\n[ERROR] : TiDownloadManager: \tat java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)\r\n[ERROR] : TiDownloadManager: \tat java.net.Socket.connect(Socket.java:884)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.Connection.connect(Connection.java:152)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:437)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:388)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)\r\n[ERROR] : TiDownloadManager: \tat java.net.URL.openStream(URL.java:470)\r\n[ERROR] : TiDownloadManager: \tat org.appcelerator.titanium.util.TiDownloadManager$DownloadJob.run(TiDownloadManager.java:135)\r\n[ERROR] : TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\r\n[ERROR] : TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\r\n[ERROR] : TiDownloadManager: \tat java.lang.Thread.run(Thread.java:818)\r\n[ERROR] : TiDownloadManager: Caused by: android.system.ErrnoException: connect failed: ENETUNREACH (Network is unreachable)\r\n[ERROR] : TiDownloadManager: \tat libcore.io.Posix.connect(Native Method)\r\n[ERROR] : TiDownloadManager: \tat libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)\r\n[ERROR] : TiDownloadManager: \tat libcore.io.IoBridge.connectErrno(IoBridge.java:137)\r\n[ERROR] : TiDownloadManager: \tat libcore.io.IoBridge.connect(IoBridge.java:122)\r\n[ERROR] : TiDownloadManager: \t... 20 more\r\n[ERROR] : TiDownloadManager: (pool-5-thread-2) [5,42512] Exception downloading http://images.cgames.de/images/idgwpgsgp/bdb/2734334/368x207.jpg\r\n[ERROR] : TiDownloadManager: (pool-5-thread-1) [1,42513] Exception downloading http://images.cgames.de/images/idgwpgsgp/bdb/2734506/368x207.jpg\r\n[ERROR] : TiDownloadManager: (pool-5-thread-2) [1,42514] Exception downloading http://images.cgames.de/images/idgwpgsgp/bdb/2734679/368x207.jpg\r\n[ERROR] : TiDownloadManager: (pool-5-thread-1) [3,42517] Exception downloading http://images.cgames.de/images/idgwpgsgp/bdb/2734570/368x207.jpg\r\n[ERROR] : TiDownloadManager: (pool-5-thread-1) [1688,155903] Exception downloading http://images.cgames.de/images/idgwpgsgp/bdb/2734575/368x207.jpg\r\n[ERROR] : TiDownloadManager: java.io.FileNotFoundException: /storage/emulated/0/Android/data/de.gamestar.news/cache/_tmp/remote-cache/a62cc5d065aa30ab829e5923be29b3879e63c4ce.hdr: open failed: ENOENT (No such file or directory)\r\n[ERROR] : TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:452)\r\n[ERROR] : TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:87)\r\n[ERROR] : TiDownloadManager: \tat java.io.FileOutputStream.(FileOutputStream.java:72)\r\n[ERROR] : TiDownloadManager: \tat java.io.FileWriter.(FileWriter.java:42)\r\n[ERROR] : TiDownloadManager: \tat org.appcelerator.titanium.util.TiResponseCache.put(TiResponseCache.java:472)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.huc.CacheAdapter.put(CacheAdapter.java:57)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.maybeCache(HttpEngine.java:554)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:826)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:443)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:388)\r\n[ERROR] : TiDownloadManager: \tat com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)\r\n[ERROR] : TiDownloadManager: \tat java.net.URL.openStream(URL.java:470)\r\n[ERROR] : TiDownloadManager: \tat org.appcelerator.titanium.util.TiDownloadManager$DownloadJob.run(TiDownloadManager.java:135)\r\n[ERROR] : TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)\r\n[ERROR] : TiDownloadManager: \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)\r\n[ERROR] : TiDownloadManager: \tat java.lang.Thread.run(Thread.java:818)\r\n[ERROR] : TiDownloadManager: Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)\r\n[ERROR] : TiDownloadManager: \tat libcore.io.Posix.open(Native Method)\r\n[ERROR] : TiDownloadManager: \tat libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)\r\n[ERROR] : TiDownloadManager: \tat libcore.io.IoBridge.open(IoBridge.java:438)\r\n[ERROR] : TiDownloadManager: \t... 15 more\r\n{noformat}\r\n\r\n\r\n\r\nIf you need more specific Information on this, just tell me!", "updateAuthor": { "name": "mbiel", "key": "mbiel", "displayName": "Marcus Biel", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-02-02T16:32:36.000+0000", "updated": "2016-02-02T16:33:57.000+0000" }, { "id": "375798", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "[~mbiel]\r\nThank you for letting us know. This ticket is currently being looked into in resolving the issue without needing storage permissions.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-02-02T23:34:30.000+0000", "updated": "2016-02-02T23:34:30.000+0000" }, { "id": "376330", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "With TIMOB-20251, remote images can load without Storage Permissions.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-02-09T12:42:33.000+0000", "updated": "2016-02-09T12:42:33.000+0000" }, { "id": "376331", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "Resolved this as Duplicate.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2016-02-09T12:43:03.000+0000", "updated": "2016-02-09T12:43:03.000+0000" }, { "id": "376548", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Closing as duplicate.\r\n\r\n", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-02-10T21:47:58.000+0000", "updated": "2016-02-10T21:47:58.000+0000" } ], "maxResults": 39, "total": 39, "startAt": 0 } } }