Загрузка видео на Facebook в Android с различными форматами с помощью веб-просмотра - PullRequest
0 голосов
/ 25 мая 2019

Я создаю приложение для 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). Могу ли я успешно сделать это, используя вышеуказанный метод, или есть ли другой способ сделать это?

Может ли кто-нибудь предложить какой-либо способ сделать это.

Заранее спасибо !!

...