android - onActivityResult() 未被调用。我无法显示图片

标签 android onactivityresult

我正在使用 Intent 调用相机和画廊。 我调用相机或画廊,但未调用 onActivityResult()。 我可以拍照并可以打开图库,但我无法显示图片。 我应该在哪里修理? 请教我。

    public static class SelectImageDialog extends DialogFragment{
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState){
            AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
            builder.setMessage("please select").setPositiveButton("camera",new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Intent intent=new Intent();
                    intent.setAction("android.media.action.IMAGE_CAPTURE");
                    startActivityForResult(intent,CAMERA);
                }
            }).setNegativeButton("gallery",new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Intent intent=new Intent();
                    intent.setAction(intent.ACTION_GET_CONTENT);
                    intent.setType("image/*");
                    startActivityForResult(intent,GALLERY);
                }
            });
            return builder.create();
        }
    }

    @Override
    public void onActivityResult(int requestCode,int resultCode,Intent data){
        if(requestCode==CATEGORY){
            if(resultCode==RESULT_OK) {
                Bundle bundle = data.getExtras();
                textCategory.setText(bundle.getString("item"));
            }
        }else if(requestCode==GALLERY){
            if(resultCode==RESULT_OK){
                try{
                    InputStream is=getContentResolver().openInputStream(data.getData());
                    Bitmap bitmap=BitmapFactory.decodeStream(is);
                    imageButton.setImageBitmap(bitmap);
                    is.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }else if(requestCode==CAMERA){
            if(resultCode==RESULT_OK){
                Bitmap bitmap=(Bitmap)data.getExtras().get("data");
                imageButton.setImageBitmap(savePic(bitmap));
            }
        }
    }

    public Bitmap savePic(Bitmap bitmap){
        String path= Environment.getExternalStorageDirectory().getPath();
        String fileName = System.currentTimeMillis() + ".png";
        try {
            FileOutputStream outputStream = new FileOutputStream(path+"/"+fileName);
            bitmap.compress(Bitmap.CompressFormat.PNG,100,outputStream);
            outputStream.close();
        }catch (Exception e){
            e.printStackTrace();
        }
        String[] paths = {Environment.getExternalStorageDirectory().getPath()+"/"+fileName};
        String[] mimeType = {"image/png"};
        MediaScannerConnection.scanFile(getApplicationContext(), paths, mimeType, new MediaScannerConnection.OnScanCompletedListener() {
            @Override
            public void onScanCompleted(String s, Uri uri) {
            }
        });
        return bitmap;
    }

最佳答案

我是这样称呼相机的

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File tempFile = File.createTempFile("my_app", ".jpg");
fileName = tempFile.getAbsolutePath(); 
Uri uri = Uri.fromFile(fileName );
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri );
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent,CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);

关于android - onActivityResult() 未被调用。我无法显示图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26965891/

相关文章:

java - 提高性能

android - 为 Android 1.6 设置安装位置?

Android:如何让一个 Activity 将结果返回给调用它的 Activity ?

android - 在android中使用sax解析器解析超长字符串

android - 在 Android 中选择选项卡时如何关闭 TabWidget

java.lang.RuntimeException : Unable to resume activity Attempted to access a cursor after it has been closed

android - ActivityResultLauncher 传递自定义请求代码

android - 无论应用程序状态如何,从通知正确启动 Activity

android - 如何解析 Android 布局 xml 文件以创建帮助页面的副本?

java - 调用 zxing 扫描仪后,我返回到我的 Activity ,但在一个新实例中