Android 选择图像时应用程序崩溃

Android 选择图像时应用程序崩溃,android,android-intent,Android,Android Intent,我试图使用intent获取图像,但当我选择图像时,我的应用程序立即关闭。 这是我的实际代码: private void capturarFoto() { String nameFoto = DateFormat.format("yyyy-MM-dd_hhmmss", new Date()).toString(); caminhoFoto = new File(Environment.getExternalStorageDirectory(),nameFoto); I

我试图使用intent获取图像,但当我选择图像时,我的应用程序立即关闭。 这是我的实际代码:

private void capturarFoto() {

    String nameFoto = DateFormat.format("yyyy-MM-dd_hhmmss", new Date()).toString();

    caminhoFoto = new File(Environment.getExternalStorageDirectory(),nameFoto);

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(caminhoFoto));
    getActivity().startActivityForResult(intent, 1);
}
它应该在选择图像后调用activityresult方法,但不幸的是,它在Logcat中没有任何错误地关闭

有什么不对劲吗

LOGCAT

请替换getActivity.startActivityForResulti,1;与

然后覆盖片段中的onActivityResult,并像这样覆盖活动中的onActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
}
并使用断点检查执行是否进入其中任何一个。

请替换getActivity.startActivityForResulti,1;与

然后覆盖片段中的onActivityResult,并像这样覆盖活动中的onActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
}
并使用断点检查执行是否进入任何一个断点。

更改此选项:

String nameFoto = DateFormat.format("yyyy-MM-dd_hhmmss", new Date()).toString();
getActivity().startActivityForResult(intent, 1);
致:

并确保添加以下权限:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
更改此项:

String nameFoto = DateFormat.format("yyyy-MM-dd_hhmmss", new Date()).toString();
getActivity().startActivityForResult(intent, 1);
致:

并确保添加以下权限:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

首先,确保您的目录已创建

 final String dir =  Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ "/Folder/";
 File newdir = new File(dir); 
 newdir.mkdirs();
比ur函数

private void capturarFoto() {
 String file = dir+DateFormat.format("yyyy-MM-dd_hhmmss", new Date()).toString()+".jpg";


File newfile = new File(file);
            try {
                newfile.createNewFile();
            } catch (IOException e) {}       

            Uri outputFileUri = Uri.fromFile(newfile);

            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

            startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
        Log.d("Demo Pic", "Picture is saved");


    }
}
}

确保在清单中添加权限

<uses-permission android:name="android.permission.CAMERA"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

祝您好运:

首先确保您的目录已创建

 final String dir =  Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ "/Folder/";
 File newdir = new File(dir); 
 newdir.mkdirs();
比ur函数

private void capturarFoto() {
 String file = dir+DateFormat.format("yyyy-MM-dd_hhmmss", new Date()).toString()+".jpg";


File newfile = new File(file);
            try {
                newfile.createNewFile();
            } catch (IOException e) {}       

            Uri outputFileUri = Uri.fromFile(newfile);

            Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

            startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {
        Log.d("Demo Pic", "Picture is saved");


    }
}
}

确保在清单中添加权限

<uses-permission android:name="android.permission.CAMERA"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

祝你好运:

你看过日志了吗?通常会出现堆栈跟踪异常您在ActivityResult上实现了什么?您是否设置了android.permission.CAMERA权限和android.permission.WRITE\u外部存储权限?可能由于权限的原因,摄像头活动无法访问文件位置?logcat没有用处。请在getActivity.startActivityForResultintent中添加断点,1;,清除logcat,然后再次运行应用程序,logcat中会出现错误。另外,你可以更好地复制/粘贴消息,而不是屏幕截图。@Carlos Robles,我做了,但不起作用。选择映像时,Logcat仍然为空。@Sdra是,onActivityResult已实现,并且权限已在AndroidManifest.xml上。您查看了日志吗?通常会出现堆栈跟踪异常您在ActivityResult上实现了什么?您是否设置了android.permission.CAMERA权限和android.permission.WRITE\u外部存储权限?可能由于权限的原因,摄像头活动无法访问文件位置?logcat没有用处。请在getActivity.startActivityForResultintent中添加断点,1;,清除logcat,然后再次运行应用程序,logcat中会出现错误。另外,你可以更好地复制/粘贴消息,而不是屏幕截图。@Carlos Robles,我做了,但不起作用。选择映像时,Logcat仍然为空。@Sdra是,onActivityResult已实现,并且权限已在AndroidManifest.xmlgreat上!我很高兴你把它修好了!伟大的我很高兴你把它修好了!