2

WebAppをWebviewで表示しました。それらのページには、ビデオ(MP4、3GP ...)へのリンクがいくつかあります。

リンクをクリックしても何も起こりません。

public class luxgateway extends Activity {

WebView myWebView;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);     

    myWebView = (WebView) findViewById(R.id.webview);
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.getSettings().setAllowFileAccess(true); 

    WebViewClient webViewClient = new MyWebViewClient();
    myWebView.setWebViewClient(webViewClient);

    myWebView.loadUrl("http://www.example.com/demo.html");
}

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
        myWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

private class MyWebViewClient extends WebViewClient {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.endsWith(".3gp")) {
            Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
            view.getContext().startActivity(intent);    
            return true;
        } else {
            return super.shouldOverrideUrlLoading(view, url);
        }
    }
}

このサーバーでこのコードの一部を見つけましたが、役に立ちません。」

        if (url.endsWith(".3gp")) {
            Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
            view.getContext().startActivity(intent);    
            return true;
        } else {
            return super.shouldOverrideUrlLoading(view, url);
        }

この場合、私は3GPファイルに制限されていますが、どの拡張子がWEBサイトに配置されるかわかりません。

私はこのコードをテストで試しましたが、ビデオを再生できるかどうかを確認するだけです(またはビデオプレーヤーはこのコードのみで開始します)

                Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
            view.getContext().startActivity(intent);    
            return true;

この場合、ビデオはダウンロードされるだけです。Webrowserとしてサンプルインタラクションが必要です。ビデオリンクをクリックすると、ブラウザはこのビデオにどのプレーヤーを使用するかを尋ねます。

4

1 に答える 1

6

URI にビデオが含まれていることを指定すると、運が良くなる可能性があります。

Intent intent = new Intent(Intent.ACTION_VIEW) //I encourage using this instead of specifying the string "android.intent.action.VIEW"
intent.setDataAndType(Uri.parse(url), "video/3gpp");
view.getContext().startActivity(intent);  

上記のインテントを処理する特定のパッケージを指定していないため、暗黙のインテントと呼ばれます。暗黙的インテントの場合、指定したコンテンツ タイプを処理するパッケージが複数ある場合は、それらの中から選択するよう求められます。これにより、目的の動作が得られるはずです。

于 2011-02-04T22:16:24.363 に答える