首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从图库中选择在Oreo中不工作的视频

从图库中选择在Oreo中不工作的视频
EN

Stack Overflow用户
提问于 2017-12-29 14:29:26
回答 2查看 1.9K关注 0票数 2

我使用下面的代码从图库中挑选视频,它在棉花糖之前工作得很好,但它似乎不适用于奥利奥

代码语言:javascript
代码运行次数:0
运行
复制
    try {
        Intent i = new Intent(Intent.ACTION_PICK,
        android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
        i.setType("image/* video/*");
        startActivityForResult(i, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
    } catch (Exception e) {
        e.printStackTrace();
    }

我也试过了,但不起作用

代码语言:javascript
代码运行次数:0
运行
复制
     try {
        Intent i = new Intent(Intent.ACTION_GET_CONTENT,
        android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
        i.setType("*/*");
        startActivityForResult(i, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
    } catch (Exception e) {
        e.printStackTrace();
    }
EN

回答 2

Stack Overflow用户

发布于 2017-12-29 14:57:36

试试这个..。

代码语言:javascript
代码运行次数:0
运行
复制
    Intent intent = new Intent();
intent.setType("video/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Video"),REQUEST_TAKE_GALLERY_VIDEO);

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

                // OI FILE Manager
                filemanagerstring = selectedImageUri.getPath();

                // MEDIA GALLERY
                selectedImagePath = getPath(selectedImageUri);
                if (selectedImagePath != null) {

                    Intent intent = new Intent(HomeActivity.this,
                            VideoplayAvtivity.class);
                    intent.putExtra("path", selectedImagePath);
                    startActivity(intent);
                }
            }
        }
    }

    // UPDATED!
    public String getPath(Uri uri) {
        String[] projection = { MediaStore.Video.Media.DATA };
        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
        if (cursor != null) {
            // HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
            // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
            int column_index = cursor
                    .getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        } else
            return null;
    }
票数 0
EN

Stack Overflow用户

发布于 2018-02-27 14:21:10

这是权限问题,请提供Manifest.permission.CAMERAManifest.permission.WRITE_EXTERNAL_STORAGEManifest.permission.READ_EXTERNAL_STORAGE

权限

在Android 8.0 (API级别26)之前,如果应用程序在运行时请求权限并授予权限,系统还会错误地授予应用程序属于同一权限组的其余权限,以及在清单中注册的权限。

对于面向Android 8.0的应用程序,此行为已更正。该应用程序仅被授予它显式请求的权限。但是,一旦用户向应用程序授予权限,则会自动授予该权限组中的所有后续权限请求。

例如,假设一个应用程序在其清单中同时列出了READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE。应用程序请求READ_EXTERNAL_STORAGE,用户授予它。如果app的目标API级别为25或更低,系统也会同时授予WRITE_EXTERNAL_STORAGE权限,因为它属于同一个存储权限组,并且也在清单中注册。如果应用程序以Android8.0(API26级)为目标,则系统当时仅授予READ_EXTERNAL_STORAGE权限;但是,如果应用程序稍后请求WRITE_EXTERNAL_STORAGE,系统将立即授予该权限,而不提示用户Source link

,但您必须提供对外部存储的读写权限。对我来说,它是工作的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48018418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档