作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
一位客户报告了一个奇怪的错误。在 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 更新后开始出现的。拥有这些手机的人无法使用我们的应用程序,但对于其他所有应用程序,它都有效。
最佳答案
不确定为什么要调用 MMS 和 SMS 方法,但请尝试这样做:
DefaultHttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
try {
HttpResponse execute = client.execute(httpPost);
InputStream content = execute.getEntity().getContent();
这应该没有任何崩溃。
关于AndroidHttpClient Nullpointerexception 调用 android.net.http.AndroidHttpClient.isMmsRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20473630/
一位客户报告了一个奇怪的错误。在 AsyncTask 中执行正常的 AndroidHttpClient.execute() 时,应用程序崩溃,他得到以下堆栈跟踪 java.lang.RuntimeEx
我是一名优秀的程序员,十分优秀!