Как открыть видеоплеер в WebView? - PullRequest
2 голосов
/ 27 января 2011

Я показал 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, но я не знаю, какое расширение будет размещено наWEBsite.

Я пробовал этот код в этом тесте, только чтобы посмотреть, можно ли воспроизводить видео (или видео-проигрыватель запускается только с этим кодом

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

В этом случае видеотолько для загрузки. Я хочу использовать пример взаимодействия в качестве веб-браузера. Когда я нажимаю на ссылку видео, браузер спрашивает, какой плеер я хочу использовать для этого видео.

1 Ответ

5 голосов
/ 05 февраля 2011

Возможно, вам повезет больше, если вы укажете, что 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);  

Поскольку мы не указали конкретный пакет для обработки вышеуказанного намерения, он называется неявным намерением.Для неявных намерений, если есть несколько пакетов, которые обрабатывают тип контента, который вы укажете, вам будет предложено выбрать между ними.Это должно дать вам желаемое поведение.

...