Как связать приложение для Android с Android Webview - PullRequest
2 голосов
/ 26 декабря 2011

В настоящее время у меня есть приложение для Android, которое представляет собой веб-загрузку веб-страницы. На веб-странице я попытался сделать ссылку на рынок следующим образом ...

https://market.android.com/details?id=com.google.earth

http://market.android.com/details?id=com.google.earth

market://details?id=com.google.earth

Первый результат просто открывает белый экран (возможно, он загружается, но он был более минуты).

Второй результат говорит о том, что страница была перемещена и ссылка. Если вы нажмете эту ссылку, она сделает то же, что и первая.

Третий результат говорит о том, что страница может быть временно недоступна. (Он обрабатывает ссылку как онлайн, а не в самом телефоне)

Вот как выглядит ссылка ...

echo "<a href='https://market.android.com/details?id=com.google.earth' data-role='button'>Upgrade Now</a>";

Помните, что загружаемая мной веб-страница использует JQuery Mobile, и я повторяю ссылку с помощью php.

Как открыть ссылку на Android Market в веб-просмотре на веб-странице?

Ответы [ 2 ]

0 голосов
/ 09 января 2015

Вы можете использовать обратный вызов, когда пользователь щелкает ссылку внутри веб-просмотра.

См Обработка навигации по страницам раздел на платформе разработчика Android.

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(MyWebViewClient);

Тогда ваш обратный звонок

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("www.example.com")) {
            // This is my web site, so do not override; let my WebView load the page
            return false;
        }
        // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
}
0 голосов
/ 21 января 2012

В моем случае я получил ту же пустую / перенесенную временно описанную проблему. Я хотел использовать shouldOverrideUrlLoading, чтобы нативный браузер не использовался в потоке oauth2 от моей страницы до Google и обратно на мою страницу. Мое приложение для Android общалось с localhost / tomcat с самозаверяющим сертификатом. Оказалось, мне нужно было позвонить продолжить из-за несоответствия сертификата:

webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.i("DevAgentSocialMain", "URL: " + url);
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Log.i("DevAgentSocialMain", "onReceivedError: " + errorCode + " " + description + " url: " + failingUrl);
        super.onReceivedError(view, errorCode, description, failingUrl);
    }

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        Log.i("DevAgentSocialMain", "onReceivedSslError: " + error.getPrimaryError());
        //super.onReceivedSslError(view, handler, error);
        handler.proceed();
    }
});
...