0

在为 android 开发 AIR 应用程序时,我遇到了一个非常奇怪的情况: - 当我尝试将文件复制到 sdcard 时,出现错误 #3001 - “文件或目录访问被拒绝”。我在清单中添加了以下权限,但没有解决问题:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

为了避免任何碰撞,我曾尝试在启动应用程序之前拔下 USB 线,但这无济于事。sdcard“锁定”按钮保持“解锁”状态。我也尝试过使用另一个 sdcard,但结果是一样的。

android的版本是4.0.4,air sdk是3.2

任何建议将不胜感激。

2014 年 4 月 8 日更新

抱歉,实际上复制操作会引发错误 3002 - 文件或目录存在,并且错误 3001 被前面的destinationDir.createDirectory() 皱眉。然而它变得更加难以理解,因为 sd 卡是空的,我看不到任何东西。正如我从调试器看到的,目的地的“存在”属性是假的,所以我真的不明白为什么它会抛出错误 3002。

这是引发异常的来源:

var sourceDir:File = File.applicationDirectory.resolvePath(Model.INTERNAL_ASSETS_FOLDER);               
var destination:File = Model.externalAssetsDirectory;

try {
        if (!destination.exists) {
            destination.createDirectory();
        }

        sourceDir.copyTo(destination, true);

} catch (e:Error) {
        trace(e.message)
}
4

1 回答 1

-1

似乎android的股票版本不允许非系统应用程序向sdcard写入任何内容。这是一篇很好的文章,描述了这个问题:

http://www.chainfire.eu/articles/113/Is_Google_blocking_apps_writing_to_SD_cards_/

然而,克服这一限制的方法很少,但它们需要一些低级操作或安装自定义版本的 android。

于 2014-04-10T13:15:36.913 回答