Как поделиться видео с URL-адреса моего приложения в WhatsApp? - PullRequest
0 голосов
/ 01 августа 2020

У меня есть видео, которое воспроизводится в моем приложении с сервера. Я хочу, чтобы можно было делиться видео в WhatsApp при нажатии кнопки общего доступа.

Я понимаю, что мне нужно загрузить, загрузить видео в хранилище устройства, прежде чем поделиться через Intent. Ниже мой код, когда кнопка общего доступа нажата, индикатор выполнения продолжает загружаться, и больше ничего не происходит, я также использую FileProvider. Как мне go об этом?

Метод getVideoUrl () ниже принимает URL-адрес видео и возвращает Uri (путь к файлу) после того, как видео было загружено

    private Uri getVideoUrl(String fileURL) {
        Uri videoUri = null;
        try {
            File rootFile = new File(getCacheDir(), "share_video_" + System.currentTimeMillis() + ".mp4");
            URL url = new URL(fileURL);
            HttpURLConnection c = (HttpURLConnection) url.openConnection();
            c.setRequestMethod("GET");
            c.connect();
            FileOutputStream f = new FileOutputStream(rootFile);
            InputStream in = c.getInputStream();
            byte[] buffer = new byte[1024];
            int len1 = 0;
            while ((len1 = in.read(buffer)) > 0) {
                f.write(buffer, 0, len1);
            }
            videoUri = FileProvider.getUriForFile(this,
                    getPackageName() + ".provider", rootFile);
            f.close();
        } catch (IOException e) {
            Log.d("Error....", e.toString());
        }
        return videoUri; // returns the file path to the video from storage
    }

метод для обмена видео, который вызывается нажатием кнопки «Поделиться». Затем я получаю resultCode в onActivityResult () и делаю progressBar невидимым и отображаю сообщение о том, что видео было опубликовано.

 public void shareVideo(String videoUrl, String desc){
        progressBar.setVisibility(View.VISIBLE);
        Intent i = new Intent(Intent.ACTION_SEND);
        i.setType("*/*");
        i.setPackage("com.whatsapp");
        i.putExtra(Intent.EXTRA_TEXT, desc );  //to share text
        i.putExtra(Intent.EXTRA_STREAM, getVideoUrl(videoUrl));   //to share video
        i = Intent.createChooser(i, "Share video");
        startActivityForResult(i, POSTED_VIDEO);

    }

shareVideo () теперь вызывается в shareButtonOnClickListner ()

@Override
    public void onClick(View v) {
        String videoUrl = "https://linktoVideo.mp4"; //just an example link
        String desc = "Shared Video;
        switch (v.getId()) {
            case R.id.post_image:
                shareVideo(videoUrl, desc);
        }
    }

Что я делаю не так?

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