写入文件不再适用于 TiSDK 5.2.0 / Android 6.0

Writing File not anymore working in TiSDK 5.2.0 / Android 6.0

在 TiSDK 5.1 中。2.GA 下面的示例在 Android 6.x 中也可以正常工作,无需用户为此应用程序提供明确许可。

var win1 = Titanium.UI.createWindow();
var sourceFile = Ti.Filesystem.getFile(
    Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory).nativePath,
    "andylution.jpg"
);
var destFile = Ti.Filesystem.getFile(
Ti.Filesystem.getFile(Ti.Filesystem.getApplicationDataDirectory(true)).nativePath,
    'andylution.jpg'
);

if (sourceFile.exists() && destFile.exists() === false) {
    destFile.write(sourceFile.read());
}

win1.add(Ti.UI.createImageView({
    image: destFile
}));

win1.open();

但是当我更新到 TiSDK 5.2 时。0.GA 在用户允许应用程序使用存储之前,destFile 不会更具可读性。

最让我困惑的是,两个版本中的 destFile 具有相同的 File.URL。

我在做某事吗?错误还是有错误?

in Android 6,您应该至少授予一次访问文件存储的明确权限, 即使使用5.1.2.GA,我之前也试过

var win1 = Titanium.UI.createWindow();
if (!Ti.Media.hasCameraPermissions()) {
    Titanium.Media.requestCameraPermissions(function() {
       var sourceFile = Ti.Filesystem.getFile(Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory).nativePath, "andylution.jpg");
       var destFile = Ti.Filesystem.getFile(Ti.Filesystem.getFile(Ti.Filesystem.getApplicationDataDirectory(true)).nativePath,'andylution.jpg');

       if (sourceFile.exists() && destFile.exists() === false) {
          destFile.write(sourceFile.read());
       }

       win1.add(Ti.UI.createImageView({
         image: destFile
       }));
       win1.open();
    });