Android - 如何通过意图捕获选定的视频

时间:2017-11-18 11:33:20

标签: android android-intent onactivityresult

我正在编写一个代码,用户可以通过手机上传视频。

我唯一的问题是我不知道如何获取/保存文件。

用户可以访问他的图书馆并选择他的视频。 但后来我不知道如何得到他选择的东西

这是我的代码

    @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    btnVideo.setOnClickListener(this);
    btnAudio.setOnClickListener(this);
}

@Override
public void onClick(View view) {
    int id = view.getId();
    switch (id){
        case R.id.btnUploadVideo:
            if(!checkStoragePermission())return;
            uploadVideo();
            break;
        case R.id.btnUploadAudio:
            break;
    }

}

private void uploadVideo() {
    Intent intent = new Intent();
    intent.setType("video/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent,"Select Video"),OPEN_MEDIA_PICKER);
}

private boolean checkStoragePermission(){
    int resultCode = ActivityCompat.checkSelfPermission(getContext(),
            android.Manifest.permission.WRITE_EXTERNAL_STORAGE);

    boolean granted = resultCode == PackageManager.PERMISSION_GRANTED;

    if (!granted){
        ActivityCompat.requestPermissions(
                getActivity(),
                new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE},
                PICK_VIDEO_REQUEST /*Constant Field int*/
        );
    }
    return granted;
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if (requestCode == PICK_VIDEO_REQUEST && grantResults[0] == PackageManager.PERMISSION_GRANTED){
        uploadVideo();
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == PICK_VIDEO_REQUEST) {
            Uri selectedImageUri = data.getData();

        }
    }
}

我该如何处理" onActivityResult"?我该如何保存/让用户选择。

1 个答案:

答案 0 :(得分:1)

  

我唯一的问题是我不知道如何获取/保存文件。

您的代码与文件无关。

如果您希望用于选择文件,请使用a third-party file-chooser library

您的代码让用户选择一段内容,并且该内容不必是文件,更不用说您可以直接访问文件系统的文件。

我们欢迎您使用data.getData()获取内容的Uri,然后使用ContentResolveropenInputStream()获取该内容的InputStream,如果这符合您的需求。