Android,对图像,视频和音频使用相同的onActivityResult

Cha*_*eld 0 media audio video android image

我想对图像,视频和音频使用相同的onActivityResult.

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

我的代码.

private static final int SELECT_PICTURE = 1;
private static final int SELECT_AUDIO = 1;
private static final int REQUEST_TAKE_GALLERY_VIDEO = 1;
Run Code Online (Sandbox Code Playgroud)

音频,图像,视频

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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Ray*_*oix 5

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

private static final int SELECT_PICTURE = 1;
private static final int SELECT_AUDIO = 1;
private static final int REQUEST_TAKE_GALLERY_VIDEO = 1;
Run Code Online (Sandbox Code Playgroud)

然后OnActivityResult无法区分.你应该给他们一个唯一的身份证.

private static final int SELECT_PICTURE = 1;
private static final int SELECT_AUDIO = 2;
private static final int REQUEST_TAKE_GALLERY_VIDEO = 3;
Run Code Online (Sandbox Code Playgroud)