0

我收到了一份崩溃报告,但这对我来说没有意义。说文本可能不为空。它适用于我测试的任何设备,但不知何故它对少数人来说是崩溃的。最新报道使用 Galaxy Indulge (SCH-R910)。这是报告

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1096)
Caused by: java.lang.IllegalArgumentException: Text may not be null
at org.apache.http.entity.mime.content.StringBody.<init>(StringBody.java:94)
at org.apache.http.entity.mime.content.StringBody.<init>(StringBody.java:113)
at    com.pff.photosfromfriends.UploadPicture$uploadthephoto.doInBackground(UploadPicture.java:313)
at com.pff.photosfromfriends.UploadPicture$uploadthephoto.doInBackground(UploadPicture.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 4 more

这是我的上传代码

class uploadthephoto extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(UploadPicture.this);
        pDialog.setMessage("Uploading Picture");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();

    }

    @Override
    protected String doInBackground(String... args) {

        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(POST_COMMNT_URL);

        try {

            MultipartEntity entity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);
            File file = new File(theimagepath);
            cbFile = new FileBody(file, "image/jpeg");
            entity.addPart("username", new StringBody(username,
                    Charset.forName("UTF-8")));
            entity.addPart("name", new StringBody(name,
                    Charset.forName("UTF-8")));
            entity.addPart("album", new StringBody(spinselected, Charset.forName("UTF-8")));
            entity.addPart("picture", cbFile);
            post.setEntity(entity);


            HttpResponse response1 = client.execute(post);
            HttpEntity resEntity = response1.getEntity();
            String Response = EntityUtils.toString(resEntity);
            Log.d("Response", Response);

            json = new JSONObject(Response);
            success_number = json.getInt("success");

            if (success_number == 1) { // picture added!
                return json.getString("message");

            } else {
                Log.d("Login Failure!", json.getString(message));
                return json.getString("message");

            }

        } catch (IOException e) {
            Log.e("asdf", e.getMessage(), e);

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;

    }

    protected void onPostExecute(String file_url) {
        pDialog.dismiss();
        if (file_url != null) {
            Toast.makeText(UploadPicture.this, file_url, Toast.LENGTH_LONG)
                    .show();
        }

    }
}

// Username is from SharedPreferences
// Name is from SharedPreferences
// Album is from a Spinner 
// Picture is chosen from their gallery

知道为什么它会在某些设备上引发此错误吗?谢谢你。

4

1 回答 1

1

就是这一行:

entity.addPart("album", new StringBody(spinselected, Charset.forName("UTF-8")));

显然spinselected是 null 并且StringBody如果它是使用 null 参数构造的,则会引发错误。

Caused by: java.lang.IllegalArgumentException: Text may not be null
at org.apache.http.entity.mime.content.StringBody.<init>(StringBody.java:94) 
于 2013-11-26T03:10:18.193 回答