Я создаю приложение для Android для загрузки видео в Facebook с различными форматами. Я использовал веб-сайт facebook для загрузки страницы facebook и следовал методу, описанному в ссылке ниже,
Как обнаружить видео в Android WebView с помощью HitTestResult?
, как упоминалось выше, использовала функцию javascript для прямой загрузки видео.
webView.loadUrl("javascript:(function() { "
+ "var el = document.querySelectorAll('div[data-sigil]');"
+ "for(var i=0;i<el.length; i++)"
+ "{"
+ "var sigil = el[i].dataset.sigil;"
+ "if(sigil.indexOf('inlineVideo') > -1){"
+ "delete el[i].dataset.sigil;"
+ "var jsonData = JSON.parse(el[i].dataset.store);"
+ "el[i].setAttribute('onClick', 'FBDownloader.processVideo(\"'+jsonData['src']+'\");');"
+ "}" + "}" + "})()");
Интерфейс процессаВидео
@JavascriptInterface
public void processVideo(final String vidData, final String vidID)
{
try
{
String mBaseFolderPath = android.os.Environment
.getExternalStorageDirectory()
+ File.separator
+ "FacebookVideos" + File.separator;
if (!new File(mBaseFolderPath).exists())
{
new File(mBaseFolderPath).mkdir();
}
String mFilePath = "file://" + mBaseFolderPath + "/" + vidID + ".mp4";
Uri downloadUri = Uri.parse(vidData);
DownloadManager.Request req = new DownloadManager.Request(downloadUri);
req.setDestinationUri(Uri.parse(mFilePath));
req.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
DownloadManager dm = (DownloadManager) getSystemService(getApplicationContext().DOWNLOAD_SERVICE);
dm.enqueue(req);
Toast.makeText(this, "Download Started", Toast.LENGTH_LONG).show();
}
catch (Exception e)
{
Toast.makeText(this, "Download Failed: " + e.toString(), Toast.LENGTH_LONG).show();
}
}
Работает нормально. Теперь мне нужно загрузить это видео, предоставив варианты загрузки в различных форматах (360p / 720p). Могу ли я успешно сделать это, используя вышеуказанный метод, или есть ли другой способ сделать это?
Может ли кто-нибудь предложить какой-либо способ сделать это.
Заранее спасибо !!