Java 以编程方式从相机文件夹获取图像

Java 以编程方式从相机文件夹获取图像,java,android,gallery,android-camera,Java,Android,Gallery,Android Camera,伙计们 我在这里面临一个奇怪的问题。我有一个应用程序,你可以选择从画廊或相机在一个按钮点击图像。一切都很顺利,除了每当我从相机文件夹中选择任何图片时,应用程序就崩溃了。下面是我的密码 case R.id.camera: AlertDialog.Builder builder = new AlertDialog.Builder(Splash.this); builder.setTitle("Choose Image Source"); build

伙计们

我在这里面临一个奇怪的问题。我有一个应用程序,你可以选择从画廊或相机在一个按钮点击图像。一切都很顺利,除了每当我从相机文件夹中选择任何图片时,应用程序就崩溃了。下面是我的密码

case R.id.camera:

        AlertDialog.Builder builder = new AlertDialog.Builder(Splash.this);

        builder.setTitle("Choose Image Source");
        builder.setItems(new CharSequence[] { "Gallery", "Camera" },
                new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                        switch (which) {
                        case 0:

                            Intent intent = new Intent(
                                    Intent.ACTION_GET_CONTENT);
                            intent.setType("image/*");

                            Intent chooser = Intent.createChooser(intent,
                                    "Choose a Picture");
                            startActivityForResult(chooser,
                                    ACTION_REQUEST_GALLERY);

                            break;

                        case 1:

                            Intent cameraIntent = new Intent(
                                    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                            String mImageCaptureUri = null;
                            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                                    mImageCaptureUri);
                            startActivityForResult(cameraIntent,
                                    ACTION_REQUEST_CAMERA);

                            break;

                        }
                    }
                });

        builder.show();

        break;
结果活动:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {

        switch (requestCode) {
        case ACTION_REQUEST_GALLERY:


            Uri selectedImageUri;

            selectedImageUri = data == null ? null : data.getData();

            cap.setImageURI(selectedImageUri);



            break;

        case ACTION_REQUEST_CAMERA:

            Bitmap photo = (Bitmap) data.getExtras().get("data");

            cap.setImageBitmap(photo);

            // CALL THIS METHOD TO GET THE URI FROM THE BITMAP
            Uri tempUri = getImageUri(getApplicationContext(), photo);

            // CALL THIS METHOD TO GET THE ACTUAL PATH
            File finalFile = new File(getRealPathFromURI(tempUri));

            Toast.makeText(getApplicationContext(),
                    finalFile.getAbsolutePath(), 4000).show();

            break;
        }

    }
}

很难说没有logcat,但最可能的原因是图像尺寸太大,使用相机拍摄的照片太大,无法在不缩放的情况下显示,这就是为什么您尝试的一些图像可以正常工作,而相机图像无法正常工作的原因。尝试google:scaling larg bitmaps google开发者,你会发现官方帖子

请在日志中发布错误的详细信息。不幸的是,我用手机对其进行了测试,因为模拟器没有任何图片可供选择。它只会与相机文件夹中的照片崩溃,我的图库中有我的Facebook相册,它工作正常。可能是这样的:你不能将手机连接到电脑上查看日志吗?没有做到这一点,Google Play有各种各样的日志收集器应用程序来获取logcat,尽管这些应用程序在Android 4.1之后就不起作用了。现在,我在Toast中获得了图片的完整路径,然后将其分配给imageview。我在图库中选择的所有照片都获取图像路径,例如“storage/sdcard/DCIM/…jpg”,但将图片指定给imageview时出错。有人能告诉我如何从图片路径设置imageviwe吗?谢谢,我发现这就是问题所在。我缩小了相机文件夹中选定的图像,然后才可以查看它,它可以工作!!谢谢