Ошибка «Не удается воспроизвести видео» в VideoView после чтения URI из базы данных - PullRequest
0 голосов
/ 15 мая 2018

В моем приложении я выбираю видео с помощью Intent следующим образом:

    Intent intent = new Intent();
    intent.setType("video/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, SELECT_VIDEO);

Затем URI видео сохраняется в базе данных в формате String

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK && requestCode == SELECT_VIDEO) {
        Uri selectedVideoUri = data.getData();
        if (selectedVideoUri != null) {
                    videoPathList.add(selectedVideoUri.toString());

Я читаю строку из базы данных, преобразую ее в uri с помощью метода Uri.parse () и использую ее для воспроизведения видео. Однако я получаю ошибку «Не могу воспроизвести видео».

    VideoView videoView =(VideoView)findViewById(R.id.videoView);

    //Creating MediaController
    MediaController mediaController= new MediaController(this);
    mediaController.setAnchorView(videoView);

    Uri uri= Uri.parse(getIntent().getStringExtra("video_path"));

    //Setting MediaController and URI, then starting the videoView
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(uri);
    videoView.requestFocus();
    videoView.start();

Видео воспроизводится нормально, если я играю, используя uri, полученный в onActivityResult (). Проблема возникает только после сохранения URI в базе данных в строковом формате. Как мне это решить?

1 Ответ

0 голосов
/ 15 мая 2018

Затем URI видео сохраняется в базе данных в формате String

Uri может быть недоступен позже.

Как мне решить эту проблему?

В Android 4.4+ переключитесь на ACTION_OPEN_DOCUMENT вместо ACTION_GET_CONTENT. Затем, когда вы получите Uri, позвоните takePersistableUriPermissions() на ContentResolver. Это должно обеспечить вам постоянный доступ к контенту, обозначенному Uri, и вы сможете воспроизвести видео позже ... при условии, что видео, конечно же, все еще там.

См. этот блог для получения дополнительной информации по этой теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...