2013-12-09 12 views
8

Klient zgłosił dziwny błąd. Podczas normalnej AndroidHttpClient.execute() w AsyncTask ulega awarii aplikacji i dostaje następujący ślad stosuAndroidHttpClient Wywołanie punktu zerowego wywołanie android.net.http.AndroidHttpClient.isMmsRequest

java.lang.RuntimeException: An error occured while executing doInBackground() 
at android.os.AsyncTask$3.done(AsyncTask.java:299) 
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
at java.lang.Thread.run(Thread.java:841) 
Caused by: java.lang.NullPointerException 
at android.net.http.AndroidHttpClient.isMmsRequest(AndroidHttpClient.java:257) 
at android.net.http.AndroidHttpClient.checkMmsSendPermission(AndroidHttpClient.java:290) 
at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:296) 
at com.xxx.xxx.MyClass$MyHandler.doWork(MyClass.java:325) 
at com.xxx.xxx.NetworkRequestHandler$AsyncTaskForRequestHandler.doInBackground(NetworkRequestHandler.java:532) 
at com.xxx.xxx.utils.network.NetworkRequestHandler$AsyncTaskForRequestHandler.doInBackground(NetworkRequestHandler.java:1) 
at android.os.AsyncTask$2.call(AsyncTask.java:287) 
at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
... 3 more 

Dlaczego wzywającą checkMMSSendPermission i isSmsRequest? W ogóle nie używamy MMS-ów i SMS-ów, a aplikacja nie ma tych uprawnień, co chyba powoduje awarię. Działa to dla wszystkich pozostałych 99,9% naszych użytkowników.

kod wygląda następująco

AndroidHttpClient client = AndroidHttpClient.newInstance(null); 
     InputStream inputStream = null; 
     try 
     { 
      HttpPost request = new HttpPost(urlString); 
      prepareURLRequest(request); 
      HttpResponse response = client.execute(request); 
      mResultStatus = response.getStatusLine().getStatusCode(); 
      inputStream = response.getEntity().getContent(); 
... 

Każda pomoc będzie mile widziane

Aktualizacja

To wydaje się być tylko wpływając Sony Xperia Z, Z1 i Zr komórkowych. Wygląda na to, że problemy zaczęły pojawiać się po otrzymaniu aktualizacji do Androida 4.3. Nikt z tymi telefonami nie może korzystać z naszej aplikacji, ale dla wszystkich innych działa.

+2

użyj 'klienta HttpClient = new DefaultHttpClient();' – Raghunandan

+0

Dziękuję za Twój komentarz. Czy to rozwiązuje problem z wiadomościami MMS? Czy widziałeś już ten problem? – KlasE

+0

Mam taki sam problem na jednym Sony XL39h. I działa po zmianie na 'DefaultHttpClient'. Czy znalazłeś rozwiązanie tego problemu bez zmiany 'HttpClient'? –

Odpowiedz

2

Nie wiem, dlaczego to wykonywanie połączeń do MMS i SMS metod, ale spróbuj to zrobić:

DefaultHttpClient client = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost(url); 
try { 
    HttpResponse execute = client.execute(httpPost); 
    InputStream content = execute.getEntity().getContent(); 

To powinno działać bez żadnej awarii.

+0

Dziękujemy za odpowiedź. Weryfikuję to. Jednak wcześniej występowały problemy z DefaultHttpClient ze starszymi wersjami Androida. Niestety, nie pamiętam dokładnie, jakie były te problemy. Wiem tylko, że normalne HttpUrlConnection działa dla wszystkich wersji Androida 4.x. Niestety, są problemy z urządzeniami 2.x, jeśli chodzi o wykonywanie POST razem z SSL i pustą treścią. AndroidHttpClient był jedynym, nad którym pracowałem używając tego samego kodu dla wszystkich wersji Androida. A teraz ta opcja również minęła i wydaje się, że tylko problem z Xperią, jak to możliwe? – KlasE

+0

Może powinienem przeformułować powyższe pytanie. Co naprawdę chcę wiedzieć, to dlaczego sprawdza, czy MMS jest uprawniony do korzystania z AndroidHttpClient i dlaczego nie działa z wyjątkiem NullPointerException? – KlasE

+1

Przypuszczam, że jest to błąd oprogramowania układowego. – Raiv