0

尝试将文件保存到存储中,在三星 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

任何帮助将不胜感激,谢谢。

4

1 回答 1

1

现在觉得好傻。我发现问题出在哪里,当手机通过 USB 插入时,它会将 sdcard 安装在手机上,所以手机会自动崩溃。但是当我把它拔掉时一切正常,很抱歉给您带来不便,但希望其他人将来也会遇到同样的问题:)

于 2012-10-06T00:56:53.500 回答