在android Webview cookie中编辑一个值

时间:2016-12-13 22:46:24

标签: android cookies webview

我想修改WebView页面上的默认单位设置" knots"到" km / h"通过编辑cookie。 我得到WebView这样的cookie:

CookieManager cookieManager = CookieManager.getInstance();            
cookie = cookieManager.getCookie(link);

默认的cookie结果是:

  

.. wf_units =%7B%22temperature%22%3A%22C%22%2C%22windspeed%22%3A%22的 KTS %22%2C%22wa ...

通过手动编辑WV页面上的单位设置" knots"到" km / h" cookie结果是:

  

.. wf_units =%7B%22temperature%22%3A%22C%22%2C%22windspeed%22%3A%22的公里%22%2C%22wa ...

我确实喜欢这个:

@Override
public void onPageFinished(WebView view, String url) {
String ck ="..wf_units=%7B%22temperature%22%3A%22c%22%2C%22windspeed%22%3A%22km%22%2C%22wa...";
cookieManager.setCookie(link, ck );
}

但我仍然得到" kts"在cookie中,我也试过这个:

@Override
public void onPageFinished(WebView view, String url) {
cookie.replace("kts","km"); 
}

1 个答案:

答案 0 :(得分:1)

我这样想:

// get cookie file in Android api 17
File cokieFile = new   File(getFilesDir().getParent()+"/app_webview/Cookies");

// get cookie file in Android api 23
File webviewCookiesChromiumFile = new File(getFilesDir().getParent()+"/databases/webviewCookiesChromium.db");

然后手动编辑" kts "值为" km "使用程序浏览&编辑.db文件。

接下来,我将已编辑的cookie文件放入Assets文件夹中的应用程序。

然后每次应用程序如下所示,我将我的资源文件夹中的文件替换为webview生成的cookie文件:

File app_webviewFile = new File(getFilesDir().getParent()+"/app_webview/");
File cokieFile = new File(getFilesDir().getParent()+"/app_webview/Cookies");
AssetManager assetManager = getAssets();         
try {

     OutputStream myOutput = new FileOutputStream(cokieFile);
            byte[] buffer = new byte[1024];
            int length;
            InputStream myInput = assetManager.open("Cookies");
            while ((length = myInput.read(buffer)) > 0) {
                myOutput.write(buffer, 0, length);
            }
            myInput.close();
            myOutput.flush();
            myOutput.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(this, "?", Toast.LENGTH_LONG).show();
    }

希望这可以帮助其他人。