У меня есть видео, которое воспроизводится в моем приложении с сервера. Я хочу, чтобы можно было делиться видео в 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);
}
}
Что я делаю не так?