【问题标题】:Android, use same onActivityResult for Images, Video and AudioAndroid,对图像、视频和音频使用相同的 onActivityResult
【发布时间】:2016-12-02 09:23:08
【问题描述】:

我想对图像、视频和音频使用相同的 onActivityResult。

问题。
当我选择音频时,它会在视频和图像中保存音频的路径。 我在分离图像、视频和音频时遇到问题。

我的代码。

private static final int SELECT_PICTURE = 1;
private static final int SELECT_AUDIO = 1;
private static final int REQUEST_TAKE_GALLERY_VIDEO = 1;

音频、图片、视频

addVideo.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setType("video/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent,"Select Video"),REQUEST_TAKE_GALLERY_VIDEO);
        }
    });

    addAudio.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setType("audio/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent,"Select Audio"),SELECT_AUDIO);
        }
    });

    addImage.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PICTURE);
        }
    });

onActivityResult

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == REQUEST_TAKE_GALLERY_VIDEO) {
            Uri selectedVideoUri = data.getData();
            selectedVideoPath = getPath(selectedVideoUri);
        }
        if (requestCode == SELECT_AUDIO) {
            Uri selectedAudioUri = data.getData();
            selectedAudioPath = getPath(selectedAudioUri);
        }
        if (requestCode == SELECT_PICTURE) {
            Uri selectedImageUri = data.getData();
            selectedImagePath = getPath(selectedImageUri);
            File f = new File(selectedImagePath);
            if(f.exists()){
                //w, h
                Bitmap myBitmap = resizeImage.getCompressedBitmap(200, 200, f);
                img.setImageBitmap(myBitmap);
            }
        }
    }
}

【问题讨论】:

    标签: android image audio video media


    【解决方案1】:

    您对所有请求代码使用相同的 id

    private static final int SELECT_PICTURE = 1;
    private static final int SELECT_AUDIO = 1;
    private static final int REQUEST_TAKE_GALLERY_VIDEO = 1;
    

    OnActivityResult 则无法区分。你应该给他们一个唯一的ID。

    private static final int SELECT_PICTURE = 1;
    private static final int SELECT_AUDIO = 2;
    private static final int REQUEST_TAKE_GALLERY_VIDEO = 3;
    

    【讨论】:

      【解决方案2】:

      Charm Geldjust 根据这个更新你的静态值..

      private static final int SELECT_PICTURE = 1;
      private static final int SELECT_AUDIO = 2;
      private static final int REQUEST_TAKE_GALLERY_VIDEO = 3;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-09
        • 1970-01-01
        • 2016-05-19
        • 2019-08-14
        • 1970-01-01
        • 2016-03-12
        • 2013-10-29
        • 2016-04-25
        相关资源
        最近更新 更多