Android 当用户不使用';我没有SD卡
我有一个可以从相机拍摄照片的应用程序,但当用户将内部存储设置为默认值时,我的外部存储有问题 当我检查外部存储器上的可用空间时,它返回0字节的可用空间,但内部存储器有10GB的可用空间。这是我的密码Android 当用户不使用';我没有SD卡,android,file,android-camera,Android,File,Android Camera,我有一个可以从相机拍摄照片的应用程序,但当用户将内部存储设置为默认值时,我的外部存储有问题 当我检查外部存储器上的可用空间时,它返回0字节的可用空间,但内部存储器有10GB的可用空间。这是我的密码 Intent takePictureIntent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); StatFs stat = new StatFs(Envi
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卡时,存储图像文件的最佳方式是什么
提前感谢。我在这里发布了一个用于获取存储目录的代码:
我用它来创建新文件,它可以使用SD卡,也可以不使用SD卡。我想这里有两个外部存储器。第一个在手机上,第二个在SD卡上,但当我手机上没有可用空间时,我如何在SD卡上存储照片?我发布的代码,首先尝试获取SD卡,然后如果失败,它将获取手机存储。我尝试了你的解决方案,但它对我无效。顺便说一句,我不能使用缓存目录来存储我以后需要的文件。你能发布日志吗?发生了什么事?为什么不能将缓存目录用于以后的文件使用?我用了很多应用程序。此外,如果你想,你可以选择一个不同的目录?