2013-12-09 23 views
8

Một khách hàng đã báo cáo một lỗi lạ. Khi làm một AndroidHttpClient.execute bình thường() trong một AsyncTask, các tai nạn ứng dụng và anh nhận được stack trace sauAndroidHttpClient Nullpointerexception gọi 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 

Tại sao nó gọi checkMMSSendPermission và isSmsRequest? Chúng tôi không sử dụng MMS và SMS, và ứng dụng không có các quyền đó, mà tôi đoán là tại sao nó bị treo. Điều này phù hợp với tất cả 99,9% người dùng khác của chúng tôi.

Mã trông như thế này

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

Bất kỳ trợ giúp sẽ được chào đón

Cập nhật

Điều này dường như được chỉ ảnh hưởng đến Sony Xperia Z, Z1 và ZR điện thoại. Rõ ràng các vấn đề bắt đầu xảy ra sau khi nhận được bản cập nhật cho Android 4.3. Không ai có điện thoại có thể sử dụng ứng dụng của chúng tôi nhưng cho tất cả những người khác, nó hoạt động.

+2

sử dụng 'HttpClient client = new DefaultHttpClient();' – Raghunandan

+0

Cảm ơn bạn đã bình luận của bạn. Điều đó có giải quyết được vấn đề với MMS không? Bạn đã từng gặp vấn đề này chưa? – KlasE

+0

Tôi đã gặp vấn đề tương tự trên một chiếc Sony XL39h. Và nó hoạt động sau khi thay đổi thành 'DefaultHttpClient'. Bạn đã tìm thấy một giải pháp cho vấn đề này mà không thay đổi 'HttpClient'? –

Trả lời

2

Không chắc lý do tại sao nó thực hiện cuộc gọi đến MMS và phương pháp tin nhắn SMS nhưng cố gắng làm điều này:

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

này nên làm việc mà không cần bất kỳ tai nạn.

+0

Cảm ơn bạn đã trả lời. Tôi sẽ xác minh điều đó. Tuy nhiên, tôi đã gặp phải sự cố với DefaultHttpClient trước đây với các phiên bản Android cũ hơn. Thật không may, tôi không nhớ chính xác những vấn đề đó là gì. Những gì tôi biết là HttpUrlConnection bình thường đang làm việc cho tất cả các phiên bản Android 4.x. Thật không may, có vấn đề với các thiết bị 2.x khi nói đến làm POST cùng với SSL và một cơ thể trống rỗng. AndroidHttpClient là người duy nhất tôi làm việc sử dụng cùng một mã cho tất cả các phiên bản Android. Và bây giờ tùy chọn đó cũng biến mất và có vẻ như đó chỉ là vấn đề với Xperia, làm thế nào? – KlasE

+0

Có lẽ tôi nên thuật lại câu hỏi ở trên. Những gì tôi thực sự muốn biết là lý do tại sao nó kiểm tra cho phép MMS khi sử dụng AndroidHttpClient và tại sao nó không thành công với một NullPointerException? – KlasE

+1

Tôi cho rằng đây là lỗi phần cứng – Raiv

Các vấn đề liên quan