Cookie管理器引发致命信号11。

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()行出现故障(即,我在该行之前和之后记录一条消息,它打印出之前的消息但不打印后面的消息)。

有人遇到过这个问题吗?

3个回答

27
在调用CookieManager之前,请添加CookieSyncManager.createInstance(context);

没有这个,我的应用程序在Jellybean上会崩溃。 - Fouad
自Android SDK 21起,CookieSyncManager已被弃用。https://developer.android.com/reference/android/webkit/CookieSyncManager - tom_mai78101

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();
}

0

如果您完全确定此崩溃是由您上面的代码触发的,那么这表示存在固件错误。没有任何一种Android SDK应用程序应该能够触发SIGSEGV。

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

如果仅在某些特定设置中出现此问题(例如,一个设备,一个ROM修改版),而其他设置则没有,则可能是该环境中的某些特殊情况,此时您应该尝试从设备或ROM修改者那里获得帮助。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接