Воспроизведение MP4 или MP3 из ссылки в Android WebView

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

У меня есть 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 и открыть ассоциированное приложение в качестве браузера?

Очень признателен!

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

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

  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); } } 

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

 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); 

UPDATE :: изменить ::

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

для ::

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

У меня есть аналогичная страница, которая загружает 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(); 

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