Я использовал следующий метод для установки UserAgent, как сказал @comrade
mXWalkView.setUserAgentString("MyCustomUserAgent")
Для настроек куки я применил следующий подход. Сначала я получаю все файлы cookie, хранящиеся в cookieStore Android, скрывая их в String и составляя список строк.
public List<String> getAllCookies(){
List<Cookie> cookies=instance.cookieStore.getCookies();
List<String> cookiesList = new ArrayList<String>();
for(Cookie cookie: cookies)
{
String cookieString = cookie.getName() + "=" + cookie.getValue() + "; Path=" + cookie.getPath();// + "; Domain=" + cookie.getDomain()
String expires = null;
if (cookie.getExpiryDate() != null) {
expires = android.text.format.DateFormat.format("EEE, dd-MMM-yyyy hh:mm:ss z", cookie.getExpiryDate()).toString();
cookieString = cookieString + "; Expires=" + expires;
}
cookiesList.add(cookieString);
}
return cookiesList;
}
Как только это будет сделано в моем CustomXWalkActivity onPageLoadFinished, я получаю список этих файлов cookie, преобразую их в JSONObject, а затем вызываю функцию javascript syncCookies.
private boolean isLoadingFirstTime=true;
private void updateCookies() {
List<String> cookies = getAllCookies();
JSONObject cookiesObj = new JSONObject();
for(String cookie : cookies){
Log.d(TAG, "cookie:" + cookie);
int iend = cookie.indexOf("=");
try {
cookiesObj.put(cookie.substring(0, iend), cookie);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Log.d(TAG, "All the cookies:" + cookiesObj);
StringBuilder buf=new StringBuilder("javascript:syncCookies('"+cookiesObj+"')");
mXWalkView.load(buf.toString(), null);
}
@Override
public void onLoadFinished(XWalkView view, String url) {
Log.d(TAG, "load finished:"+url);
if(isLoadingFirstTime){
updateCookies();
isLoadingFirstTime=false;
}
mXWalkView.clearCache(true);
super.onLoadFinished(view, url);
}
А затем на стороне Javascript у меня есть следующий код для установки файлов cookie в документе
function syncCookies(cookies){
console.log("sync cookies called",cookies);
var allCookies=JSON.parse(cookies);
for (var key in allCookies) {
console.log("cookie to be set", allCookies[key]);
document.cookie=testCookies[key];
}
}
person
hariszaman
schedule
30.07.2015