Android webview中cookie增加/修改

最近项目需求中,需要满足往webview传递cookie,而且cookie需要增加修改;

public class MainActivity extends Activity {

    private WebView contentWebView = null;
    private TextView msgView = null;

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        contentWebView = (WebView) findViewById(R.id.webview);
        msgView = (TextView) findViewById(R.id.msg);
        // 启用javascript
        contentWebView.getSettings().setJavaScriptEnabled(true);
        // 从assets目录下面的加载html
        contentWebView.loadUrl("http://60.29.255.184/api/android/setcookie");

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(btnClickListener);
        contentWebView.addJavascriptInterface(this, "wst");
    }

    OnClickListener btnClickListener = new Button.OnClickListener() {
        public void onClick(View v) {
            // 无参数调用
//            contentWebView.loadUrl("javascript:javacalljs()");
//            // 传递参数调用
//            contentWebView.loadUrl("javascript:javacalljswithargs(" + "'hello world'" + ")");
            CookieSyncManager.createInstance(MainActivity.this);  
            CookieManager cookieManager = CookieManager.getInstance(); 
            cookieManager.setAcceptCookie(true); 
            cookieManager.getCookie("http://60.29.255.184");
            
            System.out.println("--------------- 1 ----------------------"+cookieManager.getCookie("http://60.29.255.184"));
            //第一次往cookie中新增值;
            cookieManager.setCookie("http://60.29.255.184", "VodKeySid=f9d8d0cb5badcfb2f7803b64100574dd.120");
            //替换cookie中的值;
            cookieManager.setCookie("http://60.29.255.184", "VodKeySid=f9d8d0cb5badcfb2f7803b64100574dd.110");
            System.out.println("--------------- 3 ----------------------");
            System.out.println("----------------- 4 --------------------"+cookieManager.getCookie("http://60.29.255.184"));
            CookieSyncManager.getInstance().sync();
            
            contentWebView.loadUrl("http://60.29.255.184/api/android/getcookie");
        }
    };

    public void startFunction() {
        Toast.makeText(this, "js调用了java函数", Toast.LENGTH_SHORT).show();
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                msgView.setText(msgView.getText() + "
js调用了java函数");

            }
        });
    }

    public void startFunction(final String str) {
        Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                msgView.setText(msgView.getText() + "
js调用了java函数传递参数:" + str);

            }
        });
    }
}

此代码测试无误,通过查看Sqlite中的记录 ,确实cookie已经新增,而且能够完成修改;

adb shell

包下面的文件目录

由于cookie存放在数据库中

打开webview的数据库

查看cookie中的值

测试机:android虚拟机,2.3.3版本;

测试机:HTC G14,4.0.3版本;

均测试无误。

代码连接:http://pan.baidu.com/share/link?shareid=122483160&uk=3909095065

原文地址:https://www.cnblogs.com/sishuiliuyun/p/3272140.html