Android 如何防止在重新安装/更新时删除外部存储上的数据?

Android 如何防止在重新安装/更新时删除外部存储上的数据?,android,Android,我注意到,在“adb安装-r”过程中,我的应用程序在外部存储(即SD卡)上的数据被删除。虽然这对于卸载来说是正常的(然后可以选择安装以注意到它),但我不理解为什么重新安装会出现这种情况(因此对于市场更新也是如此)。我可以发誓事实并非总是如此 我是在安卓2.2上专门使用“访问外部存储上的文件”,而不是“保存应共享的文件”或“保存缓存文件”。因此,我正在“/sdcard/Android/data//files/somefolder/data”中写入和读取数据。我的偏好是不变的 @Commonware

我注意到,在“adb安装-r”过程中,我的应用程序在外部存储(即SD卡)上的数据被删除。虽然这对于卸载来说是正常的(然后可以选择安装以注意到它),但我不理解为什么重新安装会出现这种情况(因此对于市场更新也是如此)。我可以发誓事实并非总是如此

我是在安卓2.2上专门使用“访问外部存储上的文件”,而不是“保存应共享的文件”或“保存缓存文件”。因此,我正在“/sdcard/Android/data//files/somefolder/data”中写入和读取数据。我的偏好是不变的

@Commonware:getExternalFilesDir()IMHO的问题并不多,因为我看到我的数据是在预期的地方写入的。它就是粘不住。我正在使用a.o.:

public static File getDefaultDirectory(Context context, String packageName) {
    File dir;
    if(mActivity_getExternalFilesDir!=null){//API >=8
        dir = invokeGetExternalFilesDir(context, "fortune");
    }else if(mEnvironment_getExternalStorageDirectory!=null){//API <=7
        dir = invokeGetExternalStorageDirectory();
        dir = new File(dir.getPath() + "/Android/data/" + packageName + "/files/");
    }else{
        //should never occur
        return null;
    }
    return dir;
}
公共静态文件getDefaultDirectory(上下文,字符串packageName){
文件目录;
如果(mActivity_getExternalFilesDir!=null){//API>=8
dir=invokeGetExternalFilesDir(上下文,“财富”);

}否则,如果(mEnvironment_getExternalStorageDirectory!=null){//APIIIRC,则Android 2.2中存在导致这些症状的错误。我建议不要使用
getExternalFilesDir()
直到姜饼。

谢谢马克。你能发布更多信息的链接吗?或者发行号吗?找不到它…@pjv:就是这样!尽管Android 2.2.1(Nexus One的更新)中也很有可能出现这种情况,查看提交的补丁。实际上它似乎也不在2.2.1中。将不得不等待姜饼。