我想使用文件来存储购买的数据。由于该应用程序将是免费的,并且在安装时会给出一定数量的学分。 现在发生的是,如果我卸载安装,也会删除SD卡上的文件。因此,重新安装后,您可以再次获得免费积分。
我使用以下代码:
File file = new File(mContext.getExternalFilesDir(null), FILENAME);
try {
FileOutputStream os = new FileOutputStream(file);
DataOutputStream out = new DataOutputStream(os);
out.writeInt(5); //5 CREDITS TO START
out.close();
if(CreditFileExists()) {
Log.w("ExternalStorageFileCreation", "First Time so give 5 credits");
} else {
Log.e("ExternalStorageFileCreation", "Error in creating CreditFile");
Toast.makeText(mContext, R.string.sdnotavailable, Toast.LENGTH_SHORT).show();
}
} catch (IOException e) {
// Unable to create file, likely because external storage is
// not currently mounted.
Log.e("ExternalStorage", "Error writing " + file, e);
Toast.makeText(mContext, R.string.sdnotavailable, Toast.LENGTH_SHORT).show();
}
所以这个文件保存在这个目录下的getExternalFilesDir(null)中,显然卸载时清理了该目录,有人提出这方面的任何提示吗?
谢谢!
答案 0 :(得分:7)
您可以将文件放在从Environment.getExternalStorageDirectory()
派生的目录中。卸载后这些文件将保留。但是,无论您的应用是否已安装,用户都可以随时删除这些文件。
除此之外,设备上没有可以放置将在卸载后继续使用的文件的地方。