2013-04-26 48 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

相關問題