8

お客様から奇妙なエラーが報告されました。AsyncTask で通常の AndroidHttpClient.execute() を実行すると、アプリがクラッシュし、次のスタック トレースが表示されます。

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

checkMMSSendPermission と isSmsRequest を呼び出すのはなぜですか? 私たちは MMS と SMS をまったく使用しておらず、アプリケーションにはこれらのアクセス許可がありません。これがクラッシュの原因だと思います。これは、他のすべての 99.9% のユーザーに有効です。

コードは次のようになります

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

どんな助けでも大歓迎です

アップデート

これは、Sony Xperia Z、Z1、および ZR 携帯電話にのみ影響しているようです。どうやら Android 4.3 へのアップデートを受け取った後に問題が発生し始めたようです。これらの電話を持っている人は誰も私たちのアプリを使用できませんが、それ以外の場合は機能します.

4

1 に答える 1

2

MMS および SMS メソッドを呼び出している理由はわかりませんが、次のようにしてみてください。

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

これは、クラッシュすることなく機能するはずです。

于 2014-01-08T19:35:43.213 に答える