尝试将文件保存到存储中,在三星 Galaxy S3 上运行良好,但在 HTC One S 上崩溃。我有一种感觉,也许 HTC One S 没有在设备上指定外部存储。那么问题来了,我该如何规避呢?
以下是使其在 One S 上崩溃的三个功能:
public void takePicture(View view){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getMediaFileUri(MEDIA_TYPE_IMAGE, "SL_IMG_");
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, IMAGE_REQUEST_CODE);
}
private Uri getMediaFileUri(int type, String lift){
return Uri.fromFile(getMediaFile(type, lift));
}
private File getMediaFile(int type, String lift){
File dir;
if (type == MEDIA_TYPE_IMAGE) {
dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "StrongLifts"); //set destination folder
} else {
dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES), "StrongLifts/" + lift); //set destination folder
}
if (!dir.exists()){ // if dir does not exist
if (!dir.mkdirs()) { // create dir
// something went horribly wrong
return null;
}
}
和 logcat 消息:
nullPointerException: file
at android.net.Uri.fromFile(Uri.java:441)
at no.whg.getfit.LogWorkout.getMediaFileUri(LogWorkout.java:202)
at no.whg.getfit.LogWorkout.takePicture... etc
任何帮助将不胜感激,谢谢。