Воспроизведение MP4 или MP3 по ссылке в Android WebView - PullRequest
3 голосов
/ 10 марта 2011

Я искал повсюду и не могу найти точный ответ или даже близко.

У меня есть WebView, который открывает веб-страницу (JQuery Mobile), и все хорошо.

На этой странице есть статические ссылки на файлы mp3 и mp4.Идея заключается в том, что при нажатии - устройство откроет приложение звука или фильма по умолчанию для воспроизведения каждого.Это работает при использовании браузера Android без проблем.

Когда я открываю внутри WebView и нажимаю на те же ссылки - ничего не происходит.Ничто не открывается и не воспроизводится.

Я настраиваю getSettings настолько широко, насколько смогу.

**web.getSettings().setJavaScriptEnabled(true); 
    web.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    web.getSettings().setPluginsEnabled(true);
    web.getSettings().setSupportMultipleWindows(true);
    web.getSettings().setSupportZoom(true);
    web.getSettings().setBuiltInZoomControls(true);
    web.getSettings().setAllowFileAccess(true);
    web.setVerticalScrollBarEnabled(false);
    web.setHorizontalScrollBarEnabled(false);**

Я также отмечу, что я считаю, что "shouldOverrideUrlLoading" работает только на начальном URLзагружается в WebView.Это ссылка внутри этого WebView - так что, похоже, не работает.

Я пробовал это.

Любые идеи о том, как дать пользователю возможность щелкнуть ссылку в WebView иоткрыть ассоциированное приложение, как это делает браузер?

Намного ценнее!

/ r

Ответы [ 3 ]

8 голосов
/ 12 марта 2011

Хорошо - нашел ответ после долгих поисков по разным темам.

Ответ заключается в перехвате ссылки как таковой:

     public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.endsWith(".mp3")) {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.parse(url), "audio/*");
            view.getContext().startActivity(intent);   
            return true;
        } else if (url.endsWith(".mp4") || url.endsWith(".3gp")) {
                Intent intent = new Intent(Intent.ACTION_VIEW); 
                intent.setDataAndType(Uri.parse(url), "video/*");
                view.getContext().startActivity(intent);   
                return true;
        } else {
            return super.shouldOverrideUrlLoading(view, url);
        }
     }
0 голосов
/ 12 апреля 2013

У меня есть похожая страница, которая загружает URL-адрес, и этот URL-адрес содержит ссылку для воспроизведения аудио. В первый раз он работает нормально, но во второй раз он не воспроизводится. код для веб-просмотра:

WebSettings webSettings = this.webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
this.webview.setWebViewClient(new WebViewClient());
this.webview.setWebChromeClient(new WebChromeClient());
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);

на моей странице у меня есть аудио тег как

<audio id="audiotag1"  style="display:none" preload="auto" hidden='true' autostart='false'>
    <source src="../../Content/sound/NewOrder.wav" type="audio/x-wav"> 
</audio>

и я играю его через JQuery, вызывая его метод

$('#audiotag1').play();

Надеюсь, это сработает для вас.

0 голосов
/ 10 марта 2011

вы будете использовать интерфейс, который загружает новый Activity с VideoView, который выполняет медиа-ссылку и бла-бла-бла .... но я думаю, что это простой способ сделать это ...

WebView WebContent = (WebView)findViewById(R.id.myWebView);

String htmlLink= "<a href=\"http://prueba.agenciareforma.com/webs/elnorte/blackberry/mp3/uno.mp3\">Open Mp3 here!</a>";

        WebContent.loadDataWithBaseURL(null,  htmlLink, "text/html", "utf-8", null);                
        WebSettings webSettings = WebContent.getSettings();
        webSettings.setSavePassword(false);
        webSettings.setSaveFormData(false);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setSupportZoom(true);     

ОБНОВЛЕНИЕ :: изменить ::

<a href="planetofrock.com/samples/lballad.mp3">Click Here</a>

на ::

<a href="http://planetofrock.com/samples/lballad.mp3">Click Here</a>
...