我有一个可以从相机拍摄照片的应用程序,但是当用户将内部存储设置为默认值时,我的外部存储存在问题。
当我检查外部存储器上的可用空间时,它返回0字节空闲,但内部存储器有10GB的可用空间。这是我的代码。
Intent takePictureIntent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
double sdAvailSize = (double)stat.getAvailableBlocks()
* (double)stat.getBlockSize();
if(!Utils.isExternalStorageWritable()) {
Toast.makeText(AddActivity.this, R.string.external_storage_not_available, Toast.LENGTH_LONG).show();
}
else if(sdAvailSize / 1024L > 10000) {
Toast.makeText(AddActivity.this, R.string.not_enough_free_space, Toast.LENGTH_LONG).show();
}
else {
File exportDir = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + APP_PATH_SD_CARD, "");
if (!exportDir.exists()) {
exportDir.mkdirs();
}
imagePath = Calendar.getInstance().getTimeInMillis() + ".jpg";
final File file = new File(exportDir, imagePath);
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Create the storage directory if it does not exist
if (! file.exists()){
Log.d("App", "failed to create directory");
}
System.out.println("Dir exists: " + exportDir.exists());
System.out.println("File exists: " + file.exists());
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(file));
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
当我没有检查可用空间并开始拍照活动时,我可以拍照,但“确定”按钮将不起作用。
当用户没有SD卡时,存储图像文件的最佳方法是什么?
提前致谢。