Return-Path: X-Original-To: apmail-cordova-issues-archive@minotaur.apache.org Delivered-To: apmail-cordova-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A96C017E4B for ; Mon, 25 May 2015 18:57:17 +0000 (UTC) Received: (qmail 17457 invoked by uid 500); 25 May 2015 18:57:17 -0000 Delivered-To: apmail-cordova-issues-archive@cordova.apache.org Received: (qmail 17427 invoked by uid 500); 25 May 2015 18:57:17 -0000 Mailing-List: contact issues-help@cordova.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@cordova.apache.org Received: (qmail 17412 invoked by uid 99); 25 May 2015 18:57:17 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 25 May 2015 18:57:17 +0000 Date: Mon, 25 May 2015 18:57:17 +0000 (UTC) From: "Joe Bowser (JIRA)" To: issues@cordova.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (CB-9068) FileWriter.write() failure on Lollipop when no ext_sdcard present MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CB-9068?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Joe Bowser updated CB-9068: --------------------------- Priority: Major (was: Blocker) > FileWriter.write() failure on Lollipop when no ext_sdcard present > ----------------------------------------------------------------- > > Key: CB-9068 > URL: https://issues.apache.org/jira/browse/CB-9068 > Project: Apache Cordova > Issue Type: Bug > Components: Android, Plugin File > Affects Versions: 5.0.0 > Environment: Android Emulator (4.4.2, 5.0.1 and 5.1.1) > Xperia Sola (with 4.4.4) > Xperia Z3 Compact (5.0.2) > ---- > Cordova 5.0.0 > cordova-android 4.0.0 > Reporter: Tanase Butcaru > Labels: file, fileWriter, writer > > FileWriter write method fails on android lollipop versions when no external sdcard is present. > Simple test case: > {code:javascript} > function fwriteTest(){ > console.log("START FILE WRITE!!"); > console.log("CDV dataDirectory: " + cordova.file.dataDirectory); > window.resolveLocalFileSystemURL(cordova.file.dataDirectory, resolveLocalFSUrlWin, resolveLocalFSUrlErr); > } > function resolveLocalFSUrlErr(err){ console.log("resolve FS ERR: -- " + JSON.stringify(err)); } > function resolveLocalFSUrlWin(dirEntry){ > console.log("resolve FS WIN!!"); > dirEntry.getFile('fileWriter.txt', { create: true, exclusive: false }, getFileWin, getFileErr); > } > function getFileErr(err){ console.log("get file ERR: -- " + JSON.stringify(err)); } > function getFileWin(fileEntry){ > console.log("get file WIN!!"); > fileEntry.createWriter( > function(writer){ > writer.onwrite = function(evt){ > console.log("Write to file WIN!!"); > alert("ALL GOOD!!"); > }; > writer.onerror = function(err){ > console.log("Write to file FAIL: -- " + JSON.stringify(err)); > } > writer.write("sample text goes hereee"); > }, > function(err){ > console.log("create writer ERR: -- " + JSON.stringify(err)); > } > ); > } > //run test! > fwriteTest(); > {code} > AndroidManifest.xml contains the following permission, so it's all good here: > {code:xml}{code} > I have two android devices, different android versions (4.4.4 and 5.0.2) and I have 3 android emulators with android 4.4.2, 5.0.1 and 5.1.1. > I tested all environments with and without ext_sdcard (for emulators do not enter "Size" for Sd card option) and here are my results: > {noformat} > Android 4.4.4 with & without extSD (XPERIA Sola) > ================================== > LEVEL | TAG | TEXT > ======================================= > I | chromium | [INFO:CONSOLE(228)] "START FILE WRITE!!", source: <...> > -------------------------------- > I | chromium | [INFO:CONSOLE(229)] "CDV dataDirectory: file:///data/data/cdv.filewriter.issue/files/", source: <...> > -------------------------------- > W | AssetFilesystem | Asset manifest not found. Recursive copies and directory listing will be slow. > -------------------------------- > I | chromium | [INFO:CONSOLE(236)] "resolve FS WIN!!", source: <...> > -------------------------------- > I | chromium | [INFO:CONSOLE(243)] "get file WIN!!", source: <...> > -------------------------------- > D | TEST | cdvfile://localhost/files/fileWriter.txt: 23 > -------------------------------- > I | chromium | [INFO:CONSOLE(248)] "Write to file WIN!!", source: <...> > ANDROID 4.4.2 without sdcard / with sdcard (EMULATOR) > ========================================== > < same output as XPERIA Sola > > ANDROID 5.0.2 without extSD (XPERIA Z3 Compact) > =========================== > LEVEL | TAG | TEXT > ======================================= > I | chromium | [INFO:CONSOLE(228)] "START FILE WRITE!!", source: <...> > --------------------------------------- > I | chromium | [INFO:CONSOLE(229)] "CDV dataDirectory: file:///data/data/cdv.filewriter.issue/files/", source: <...> > --------------------------------------- > W | AssetFilesystem | Asset manifest not found. Recursive copies and directory listing will be slow. > --------------------------------------- > I | chromium | [INFO:CONSOLE(236)] "resolve FS WIN!!", source: <...> > --------------------------------------- > I | chromium | [INFO:CONSOLE(243)] "get file WIN!!", source: <...> > --------------------------------------- > W | ContextImpl | Failed to ensure directory: /storage/sdcard1/Android/media/cdv.filewriter.issue > --------------------------------------- > I | chromium | [INFO:CONSOLE(253)] "Write to file FAIL: -- {"type":"error","bubbles":false,"cancelBubble":false,"cancelable":false,"lengthComputable":false,"loaded":0,"total":0,"target":{"fileName":"","length":23,"localURL":"cdvfile://localhost/files/fileWriter.txt","position":0,"readyState":2,"result":null,"error":{"code":6},"onwritestart":null,"onprogress":null,"onwriteend":null,"onabort":null}}", source: <...> > ANDROID 5.0.2 with extSD > ======================== > < same output as 4.4.4 > > ANDROID 5.0.1 & 5.1.1 without sdcard (EMULATOR) > ===================================== > < same output as XPERIA Z3 Compact > > ANDROID 5.0.1 & 5.1.1 with sdcard (EMULATOR) > ================================== > < same output as XPERIA Sola > > {noformat} > All results are from LogCat console from android-sdk/tools/monitor tool. > I use Crosswalk 12-stable version as my default webview, but I have tested all this with System-webview too and the problem persists. > As you can see from printed error on write fail - there is a error 6 code and from what I've read [here|https://github.com/apache/cordova-plugin-file#list-of-error-codes-and-meanings] it's a _NO_MODIFICATION_ALLOWED_ERR_ error. > You can also replace _cordova.file.dataDirectory_ with any other path (i have tried _cacheDirectory_ and _tempDirectory_) or with a _FileSystem_ path like _LocalFileSystem.PERSISTENT_ (in this case you'll have to modify the _dirEntry.getFile_ into _dirEntry.root.getFile_ and the _resolveLocalFileSystemUrl_ with _requestFileSystem_ method and its arguments) - issue will persist! > Am I missing some configurations/permissions or it's really a bug? -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org For additional commands, e-mail: issues-help@cordova.apache.org