ファイルをストレージに保存しようとすると、Samsung Galaxy S3では正常に動作しますが、HTCOneSではクラッシュします。HTCOneSのデバイスに外部ストレージが指定されていないのではないかと思います。だから問題は、どうすればこれを回避できますか?
OneSでクラッシュする3つの関数は次のとおりです。
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
助けていただければ幸いです、ありがとう。