首页 文章

如何使用Android中的按钮更改webview中的网站

提问于
浏览 1985
0

我有 webview 默认加载 Youtube . 然后我有一个 editview 和一个按钮 . 我想在 editview 中键入另一个网站 (for example:http://www.google.com) ,当我点击按钮时, webview 将更改为网站 . 但它会刷新并保持在 Youtube . 我试图改变 onClick() 中的 setDesktopMode() ,它有效 . 请帮我 .

这是我的java代码 .

public class MainActivity extends AppCompatActivity {

    String Url;
    //Main code
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Perform web view
        final WebView webview = (WebView) findViewById(R.id.webview);
        Url = "http://www.youtube.com";
        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptEnabled(true);
        //setContentView(webview);
        webview.setWebViewClient(new WebViewClient());
        webview.loadUrl(Url);
        setDesktopMode(webview, true);

        final EditText text1 = (EditText) findViewById(R.id.text1);
        Button ok = (Button)findViewById(R.id.ok);
        ok.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View view) {
                Url = text1.getText().toString();
                webview.clearCache(true);
                webview.loadUrl(Url);
                //webview.reload();
                setDesktopMode(webview, true);
                //return;

            }
        });
    }

    public void setDesktopMode(WebView webView, boolean enabled){
        String newUserAgent = webView.getSettings().getUserAgentString();
        if(enabled){
            try{
                String ua = webView.getSettings().getUserAgentString();
                String androidOSString = webView.getSettings().getUserAgentString().substring(ua.indexOf("("), ua.indexOf(")") + 1);
                newUserAgent = webView.getSettings().getUserAgentString().replace(androidOSString, "(X11; Linux x86_64)");
            } catch (Exception e){
                e.printStackTrace();
            }
        } else {
            newUserAgent = null;
        }

        webView.getSettings().setUserAgentString(newUserAgent);
        webView.getSettings().setUseWideViewPort(enabled);
        webView.getSettings().setLoadWithOverviewMode(enabled);
        webView.reload();
    }

}

1 回答

  • 0

    嗨刚刚在上面的代码中做了一些更改 .

    Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                EditText ed = findViewById(R.id.editText);
                webView.loadUrl(null);
                webView.clearCache(true);
                setDesktopMode(webView, true);
                webView.loadUrl(ed.getText().toString());
                //webview.reload();
    
            }
        });
    

    在set桌面方法中删除重新加载行 .

    public void setDesktopMode(WebView webView, boolean enabled){
        String newUserAgent = webView.getSettings().getUserAgentString();
        if(enabled){
            try{
                String ua = webView.getSettings().getUserAgentString();
                String androidOSString = webView.getSettings().getUserAgentString().substring(ua.indexOf("("), ua.indexOf(")") + 1);
                newUserAgent = webView.getSettings().getUserAgentString().replace(androidOSString, "(X11; Linux x86_64)");
            } catch (Exception e){
                e.printStackTrace();
            }
        } else {
            newUserAgent = null;
        }
    
        webView.getSettings().setUserAgentString(newUserAgent);
        webView.getSettings().setUseWideViewPort(enabled);
        webView.getSettings().setLoadWithOverviewMode(enabled);
       // webView.reload();
    }
    

    它的工作现在很完美 .

相关问题