zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    使用BindingSource组件 将Windows Form控件绑定到通过调用XML Web服务获得的结果
    使用BindingSource组件将Windows Forms控件绑定到类型
    如何:用BindingSource将Windows Forms控件绑定到工厂对象
    如何:使用 Windows 窗体 BindingSource 组件对 ADO.NET 数据进行排序和筛选
    BindingSource
    DataSet
    C#里面如何判断一个Object是否是某种类型
    VS中提示:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
    TableAdapter、Dataset与BindingSource的关系
    BASE64和图片之间的互相转换
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/3272140.html
Copyright © 2011-2022 走看看