【问题标题】:onActivityResult not working with RESULT_OK, RESULT_CANCEL, etc when using camera on Android在 Android 上使用相机时,onActivityResult 不适用于 RESULT_OK、RESULT_CANCEL 等
【发布时间】:2011-08-24 01:10:01
【问题描述】:

我的课堂上有这样的东西:

  public class Main extends Activity {

        private static final int CAMERA_PICK = 1;
        private static final int GALLERY_PICK = 2;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            Button photo = (Button) findViewById(R.id.button);

            photo.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    createDialog();
                }
            });

        private void createdialog(Activity activity) {
            final CharSequence[] items = { "Take shot", "Take from gallery" };

            AlertDialog.Builder builder = new AlertDialog.Builder(activity);
            builder.setTitle("Get image");
            builder.setItems(items, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int item) {
                    Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
                    if (item == 0) {
                        takePhoto();
                    }
                    if (item == 1) {
                        choosePhoto();
                    }
                }
            });
            AlertDialog alert = builder.create();
            alert.show();
        }

        protected void choosePhoto() {
            // not necessary;
        }

        protected void takePhoto() {
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

            mUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "myPic"
                    + String.valueOf(System.currentTimeMillis()) + ".jpg"));
            cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri);

            try {
                cameraIntent.putExtra("return-data", true);
                startActivityForResult(cameraIntent, CAMERA_PICK);

                //Doing something with the picture here;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

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

             switch (resultCode) {
             case CAMERA_PICK:
                    break;
             case RESULT_OK:
                    Toast.makeText(Main.this, "Photo selected", Toast.LENGTH_SHORT).show();
break;
        }
       }
    }

如您所见,我正在尝试使用手机的相机拍照并稍后在图像视图中使用它。问题是我无法触发 onActivityResult(...) 方法!当我执行 startActivityForResult(cameraIntent, CAMERA_PICK);我没有办法操纵 RESULT_OK、RESULT_CANCEL 甚至我定义为 CAMERA_PICK 的那个。 onActivityResult(...) 应该完美,因为我不明白我做错了什么!

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

我已经发现了问题。我正在使用一个活动组,我 没意识到触发的onActivityResult()是第一个 所有活动之一......

【问题讨论】:

    标签: android camera switch-statement photo


    【解决方案1】:

    在某些真实设备上从图库中挑选照片时,我遇到了同样的问题。经过大量搜索,我找到了this。表示可能会触发Dialog的onActivityResult而不是activity来获取返回值。并非所有设备都会出现此问题。

    【讨论】:

      猜你喜欢
      • 2016-09-20
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多