相机意图结果困难

kaz*_*dan 3 java camera android bitmap android-intent

我正在尝试启动内置摄像头来拍摄照片,这张照片的名称将由启动摄像头的活动指定.(以下代码)

  1. 当相机返回时,onActivityResult()直接进入resultCode == Activity.RESULT_CANCELED.对此和解决方案的任何解释将不胜感激.

  2. 相机确实拍摄了图像,我可以在带有文件查看器的SD卡中看到它,但它的名字来自相机的库存.如何将此拍摄图像的名称作为活动提供的图像?

相机意图代码

Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File image = new File("Team image.jpg");
camera.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
camera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
camera.putExtra(MediaStore.Images.Media.TITLE, "Team image");
        startActivityForResult(camera, PICTURE_RESULT);
Run Code Online (Sandbox Code Playgroud)

activityresult代码

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

    if(requestCode == PICTURE_RESULT){
        if(resultCode == Activity.RESULT_OK) {
            if(data!=null){
                Bitmap image = BitmapFactory.decodeFile(data.getExtras().get(MediaStore.Images.Media.TITLE).toString());
                grid.add(image);            
                images.addItem(image);
            }
            if(data==null){
                Toast.makeText(Team_Viewer.this, "no data.", Toast.LENGTH_SHORT).show();
            }
        }
        else if(resultCode == Activity.RESULT_CANCELED) {
            Toast.makeText(Team_Viewer.this, "Picture could not be taken.", Toast.LENGTH_SHORT).show();
        }
}
}
Run Code Online (Sandbox Code Playgroud)

小智 6

您是否将活动的启动模式标记为"singleInstance"?

这可能会导致您的第一个问题.

当我删除"singleInstance"时,我的相机正常.