【问题标题】:onActivityResult Implementation Does Not Function As ExpectedonActivityResult 实现未按预期运行
【发布时间】:2014-04-24 13:38:39
【问题描述】:

我正在尝试使用 onActivityResult 来启动 Android 图库,以便根据所选的 ImageButton 显示照片或视频。

问题是在尝试打开照片时,它会尝试启动视频播放器,但我不确定原因。

附言

可以使用视频 ImageButton 成功启动和播放视频。

private static final int SELECT_PHOTO = 1;
private static final int SELECT_VIDEO = 1;


ImageButton pb = (ImageButton) findViewById(R.id.photos);
    pb.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            startActivityForResult(intent, SELECT_PHOTO);
        }
    });

    ImageButton vb = (ImageButton) findViewById(R.id.video);
    vb.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            Intent intentGallery = new Intent(
                    Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            intentGallery.setType("video/*");
            startActivityForResult(intentGallery, 1);

        }

    });
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // if (resultCode == Activity.RESULT_OK) {
    if (requestCode == SELECT_VIDEO) {
        {
            Uri selectedVideo = data.getData();
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(selectedVideo, "video/*");
            startActivity(intent);

        }
    } else if (requestCode == SELECT_PHOTO) {

        Uri selectedImage = data.getData();
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setDataAndType(selectedImage, "image/*");
        startActivity(intent);
    }

【问题讨论】:

  • 也许你弄乱了请求代码?
  • SELECT_PHOTO = ?当您为视频传递请求代码“1”时,希望它也不等于 1
  • Title 暗示 Google 搞砸了 onActivityResult 并且直到现在没有其他人看到这个错误?好笑。
  • 这根本不是我的意思——我的实现没有按预期工作

标签: android android-intent android-gallery mediastore onactivityresult


【解决方案1】:
private static final int SELECT_PHOTO = 1;
private static final int SELECT_VIDEO = 1;  

它们需要不同,值为“1”意味着它们进入相同的“if”onActivityResult()

此外,它只播放视频,因为这是您在onActivityResult() 中的第一个“如果”条件,这将始终为真:

startActivityForResult(intentGallery, 1);  
startActivityForResult(intent, SELECT_PHOTO);  

在比较它们时正确传递它们。试试看:

private static final int SELECT_PHOTO = 1;
private static final int SELECT_VIDEO = 2;

startActivityForResult(intentGallery, SELECT_VIDEO);  
startActivityForResult(intent, SELECT_PHOTO);   

应该得到some help from this

【讨论】:

    【解决方案2】:

    SLECT_VIDEO 和 SELECT_PHOTO 不能相同....

    【讨论】:

      猜你喜欢
      • 2014-11-12
      • 1970-01-01
      • 2020-06-28
      • 2012-02-18
      • 2018-01-18
      • 2012-06-14
      • 2019-03-03
      • 2012-09-21
      • 2014-07-19
      相关资源
      最近更新 更多