我想修改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");
}
答案 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();
}
希望这可以帮助其他人。