ユーザーがリンクをクリックすると、同じWebビューで開きます(shouldOverrideUrlLoading()で制御します)が、ビデオリンク(mp4、3gp)の場合、メディアプレーヤーを起動して再生しませんビデオ (通常のブラウザ アプリと同様)。Web ビュー内でビデオ リンクがクリックされたときに、メディア プレーヤーを強制的に起動するにはどうすればよいですか?
ありがとう!
この場合、外部ビデオURLをロードするためにインテントを実行する必要があります。これにより、ユーザーは問題なく前のビュー(アクティビティ)に戻ることができます。以下のコードを参照してください。
/*-----------------------------------------------------------------------------------------------
* WebViewClientHandler() allows for overriding default phone web browser so we can load in gui
*----------------------------------------------------------------------------------------------*/
private class WebViewClientHandler extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Uri uri = Uri.parse("http://YOUTSTREAM.FLV");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
return true;
}
}
今はおそらく関係ありませんが、ブラウザーに表示されるのはメディア プレーヤーではなく、Android が所有する VideoView です。ビデオ リンクがクリックされるとonShowCustomView (View view, WebChromeClient.CustomViewCallback callback)
、WebChromeClient の呼び出しが行われます。そのビューを表示し、ビューが不要になったことを WebView に通知するのは、アプリケーションの義務です。
あなたはこれを試してみるべきです
WebView webView = (WebView) findViewById(R.id.embeddedWebView);
webView.setDownloadListener(new DownloadListener()
{
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long size)
{
Intent viewIntent = new Intent(Intent.ACTION_VIEW);
viewIntent.setDataAndType(Uri.parse(url), mimeType);
try
{
startActivity(viewIntent);
}
catch (ActivityNotFoundException ex)
{
Log.w("YourLogTag", "Couldn't find activity to view mimetype: " + mimeType);
}
}
});
URLがビデオファイルを指している場合、メディアプレーヤーにそれを再生させたいという意味でした。他のすべての URL は webview によって処理されていますが、それは問題ありませんが、URL がビデオ ファイルを指している場合、その URL を読み込もうとしても何も起こりません。
まず、私の知る限り、Android は rtsp 再生のみをサポートしています。リンクをクリックして、document.location.href="rtsp://your video url"; を指定します。