0

Android アプリケーションに Web ブラウザー (Web ビュー) を追加しましたが、たとえば、Google や電話帳ページなど、通話ボタンやナビゲート ボタンがある Web サイトにアクセスすると、tel:some number を開けませんと表示されます。ナビゲート ボタンの場合は、ダイヤラーまたは Google マップを開く必要があります。どうすればこれを処理できますか? 助けてください

コード:

package com.mysoftware.mysoftwareos.launcher;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class PeopleSearchActivity extends Activity implements OnClickListener {
WebView peoplesearchWebView;
EditText peoplesearchEditText;
Button peopleSearchButton;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.peoplesearch);

    //Import views
    peoplesearchWebView = (WebView)findViewById(R.id.peoplesearchWebView);
    peoplesearchEditText = (EditText)findViewById(R.id.peoplesearchEditText);
    peopleSearchButton = (Button)findViewById(R.id.peopleSearchButton);

    //Setup onClickListener for the buttons
    peopleSearchButton.setOnClickListener(this);

    //Setup WebView
    peoplesearchWebView.getSettings().setJavaScriptEnabled(false);
    peoplesearchWebView.getSettings().setBuiltInZoomControls(false);
    peoplesearchWebView.setWebViewClient(new myWebViewClient());
}
public void onClick(View src) {
    switch(src.getId()) {
    case R.id.peopleSearchButton:
        String searchUrl;
        searchUrl = ("http://m.gulesider.no/query?search_word=" + peoplesearchEditText.getText().toString() + "&geo_area=&what=mobwp&hpp=10");
        peoplesearchWebView.loadUrl(searchUrl);
    }
}
public class myWebViewClient extends WebViewClient {
    public boolean shouldOverrideUrlLoading(String url, WebView view) {
        view.loadUrl(url);
        return true;
    }
}
}
4

2 に答える 2

0

webView設定にこれらすべてを含めるようにします

    peoplesearchWebView.getSettings().setJavaScriptEnabled(true);
    peoplesearchWebView.getSettings().setBuiltInZoomControls(true);
    peoplesearchWebView.setWebViewClient(new myWebViewClient());
    peoplesearchWebView.setInitialScale(1);
    peoplesearchWebView.getSettings().setBuiltInZoomControls(true);
    peoplesearchWebView.getSettings().setUseWideViewPort(true); 

Webサイトのdoesフィールドの一部はJavaであるため、cadeでそれらを無効にすると機能しません。

于 2012-10-04T21:37:58.277 に答える
0

WebViewClientクラスの shouldOverrideUrlLoading メソッドをオーバーライドしてみてください。webview.setWebViewClient(customWebViewClient) または webview.setWebViewClient(new WebViewClient{...}) を呼び出します。shouldOverrideUrlLoading メソッド内で、さまざまな種類のリンク (tel:、mailto:、geo: など) を確認し、インテントを手動で作成して起動します。

于 2012-10-04T20:29:48.847 に答える