12

当我尝试在 cookiemanager 上设置 cookie 时,我的应用程序静默崩溃(没有强制关闭弹出窗口)。

mHttpClient.getParams().setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, false);
HttpGet http_get = new HttpGet(url); 
HttpResponse response = mHttpClient.execute(http_get);

for(Cookie cookie : mHttpClient.getCookieStore().getCookies()) {

    Log.d(AppPreferences.TESTTAG,"cookie =  " + cookie.getName());
    if(cookie.getName().equals("SACSID") || cookie.getName().equals("ACSID"))
    {
        response.getEntity().consumeContent();
        String cookieString = cookie.getName() + "=" + cookie.getValue() + "; domain=" + cookie.getDomain();  
        CookieManager.getInstance().setCookie(cookie.getDomain(), cookieString); //**crashes here**
        return true;
    }                   
}

这是我从 logcat 得到的所有信息

04-19 22:51:35.277: W/dalvikvm(16704): Invalid indirect reference 0x414bb040 in decodeIndirectRef
04-19 22:51:35.277: E/dalvikvm(16704): VM aborting
04-19 22:51:35.281: A/libc(16704): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1), thread 16754 (AsyncTask #1)

这是生成的墓碑日志:http ://textuploader.com/?p=6&id=gPpJ

它在 CookieManager setCookie() 行上失败(即我在该行之前和之后记录一条消息,它打印之前的消息但不是之后的消息)

有人遇到这个问题吗?

4

3 回答 3

27

CookieSyncManager.createInstance(context);在调用 CookieManager 之前添加。

于 2013-06-09T14:39:18.783 回答
2

尝试在 onCreate() 方法中创建 WebView 并销毁它。WebView 在 ContentManager 和 WebKit 之间创建了一些“桥梁”。像这样的一些事情:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_layout);
    WebView web = new WebView(this);
    web.destroy();
}
于 2013-11-26T10:06:32.837 回答
0

如果您完全确定此崩溃是由上述代码触发的,则表示固件错误。Android SDK 应用程序不可能触发 SIGSEGV。

如果这发生在 Nexus 设备、模拟器或多个设备上,则可能是 Android 错误。在http://b.android.com上提交问题(如果似乎还没有问题),指出这个问题并可能附加该墓碑日志。

如果这只发生在某些特定设置(例如,一个设备,一个 ROM 模块)而不是其他设置中,则可能是该环境所特有的,在这种情况下,您应该尝试从设备或 ROM 模块制造商处获得帮助。

除此之外,请确保它cookie.getDomain()返回一个有效值,因为这似乎是最有可能的罪魁祸首。

于 2013-04-19T15:23:02.183 回答