编写文件不再在TiSDK 5.2.0 / Android 6.0中工作了

时间:2016-02-26 08:39:36

标签: android appcelerator appcelerator-titanium

在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。

我正在做某事。错了还是有错误?

1 个答案:

答案 0 :(得分:0)

在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();
    });