2013-04-26 88 views
0

我想使当前的4.0应用程序与2.1的Android设备兼容。 我以前在调用HttpResponse时发生异常,但我不知道为什么。 我所知道的是,对于API 8,我需要注释掉两行以避免错误,并且还需要进行更多的调整,而且我很好。我不完全确定这些行是做什么的,或者它们是问题的原因(因为我只是修改了一些教程中的代码段),但代码现在正在工作......这些是我注释的行:不同的行为调试vs释放模式android-释放模式冻结

/*StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 
    */ 

但处于调试模式。一旦我尝试释放模式,我会到达应用程序冻结之前的地方......我将一些Toast消息作为调试消息来检查发布模式,但它们没有显示(也许是因为我有一个progressDialog正在进行)。

主要的问题是,在调试模式下它现在工作正常(在两个不同的设备上测试),但发布模式一直存在问题(我甚至不能调试它)。

这里是我认为我的应用程序失败的代码。在调试模式下,它在调用HttpResponse时失败。有任何想法吗?

public String Send(String jsonString, String url, Context ctxt) 
{ 
    try{ 

     System.out.println(jsonString); 

     HttpPost request = new HttpPost(url); 
     request.setHeader("Accept", "text/xml"); 
     request.setHeader("Host", "www.my-host.com"); 
     request.setHeader("Content-type", "application/json"); 
     StringEntity stringEnt = new StringEntity(jsonString); 
     stringEnt.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); 
     request.setEntity(stringEnt); 

     //instantiates httpclient to make request 
     DefaultHttpClient httpclient = new DefaultHttpClient(); 

     HttpResponse response = httpclient.execute(request); 
     HttpEntity responseEntity = response.getEntity();  

     //Obtenemos el xml de la respuesta 
     String responseXML = EntityUtils.toString(responseEntity); 
     return responseXML; 
    } 
    catch(Exception e) 
    { 
     Toast.makeText(ctxt, "Error registering user", Toast.LENGTH_SHORT).show(); 
     Log.i("login", "" + e.getMessage()); 
     return "error"; 
    } 


} 

}

感谢

+0

StrictMode不工作以前的API级别9. Android 2.1是API 7 – marimaf 2013-04-26 19:27:05

+0

编辑它,谢谢。 – marimaf 2013-04-26 19:41:30

回答

1

你应该使用的AsyncTask当你打电话的HttpResponse因为Android 4.0及以上不会让你中断活动的主线。

+0

这并不能解决我的问题。我之前尝试过,现在我重试它,没有什么不同发生 – marimaf 2013-04-26 19:25:37

+1

您是否尝试在AsyncTask中包装send()而不是仅包装http调用? – 2013-04-26 19:35:43

+0

是的,这正是我所做的 – marimaf 2013-04-26 19:39:55

相关问题