1

在我的 webview 中,当通过 android 浏览器完成此操作时,我将访问http://www.nsopw.gov/Core/OffenderSearchCriteria.aspx ,它被视为移动站点。

但在我的 webview 应用程序中,它被视为不是移动浏览器,因此不会被重定向到移动版本。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.buttons);
    wb = new WebView(this);
    wb.getSettings().setJavaScriptEnabled(true);
    wb.setWebViewClient(new HelloWebViewClient());
    wb.getSettings().setSupportZoom(true);
    wb.getSettings().setBuiltInZoomControls(true);
    wb.getSettings().setDomStorageEnabled(true);
    String[] loading = getResources().getStringArray(R.array.array_loading);

    Random r = new Random();
    int rN = r.nextInt(12 - 1) + 1;
    progressBar = ProgressDialog.show(Sex_Offenders.this, loading[rN],
            "Loading...");

     final String urlToLoad ="http://www.nsopw.gov/Core/OffenderSearchCriteria.aspx";
    //final String urlToLoad = "http://m.familywatchdog.us/m_v2/msa.asp?es=&l=0&w=0&brtp=html&rstp=xlarge&imgtp=jpg&imgw=310&imgh=320";

    wb.setWebViewClient(new HelloWebViewClient() {
        public void onPageFinished(WebView view, String url) {

            if (progressBar.isShowing()) {
                progressBar.dismiss();
            }
        }
    });

    Context context = getApplicationContext();
    if (Repeatables.isNetworkAvailable(context) == true) {
        wb.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
        wb.loadUrl(urlToLoad);
    } else {
        wb.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        wb.loadUrl(urlToLoad);
        Repeatables.NoConnectionAlert(this);
    }
    setContentView(wb);
4

1 回答 1

6

尝试自己强制使用用户代理字符串,因为 webview 用户代理字符串似乎没有将自己标识为移动浏览器。采用

webview.getSettings.setUserAgentString(...)

你可以用谷歌搜索用户代理字符串,我用过

Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

它与您在网站中提供的链接一起使用并加载了移动版本。

于 2012-05-31T13:40:08.450 回答