尝试将pic上传到服务器时应用程序崩溃

时间:2018-03-28 12:32:21

标签: android exception server upload

1.我正在尝试将图片上传到服务器它适用于某些图片而不适用于其他图片,当它崩溃时会显示以下错误:

android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
                  at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460)
                  at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
                  at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
                  at android.database.CursorWrapper.getString(CursorWrapper.java:137)
                  at com.example.th3hokage.pfev1.UploadPic.getPath(UploadPic.java:141)
                  at com.example.th3hokage.pfev1.UploadPic.uploadMultipart(UploadPic.java:81)
                  at com.example.th3hokage.pfev1.UploadPic.onClick(UploadPic.java:188)
                  at android.view.View.performClick(View.java:6199)
                  at android.widget.TextView.performClick(TextView.java:11090)
                  at android.view.View$PerformClick.run(View.java:23647)
                  at android.os.Handler.handleCallback(Handler.java:751)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:154)
                  at android.app.ActivityThread.main(ActivityThread.java:6682)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

2.有哪些方法可以完成工作我认为这将是关于光标的东西,但我仍然不知道为什么我可以上传一些图片而其他人不是

 public void uploadMultipart() {
    SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
    SharedPreferences.Editor editor = pref.edit();
    final String name2=pref.getString("name",null);
    //getting name for the image
    String name1 = editText.getText().toString().trim();
    String name=name1+name2;

    //getting the actual path of the image
    String path = getPath(filePath);

    //Uploading code
    try {
        String uploadId = UUID.randomUUID().toString();

        //Creating a multi part request
        new MultipartUploadRequest(this, uploadId, Constants.UPLOAD_URL)
                .addFileToUpload(path, "image") //Adding file
                .addParameter("name", name) //Adding text parameter to the request
                .setNotificationConfig(new UploadNotificationConfig())
                .setMaxRetries(2)
                .startUpload(); //Starting the upload

    } catch (Exception exc) {
        Toast.makeText(this, exc.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

 public String getPath(Uri uri) {
    String path="";
    Cursor cursor = getContentResolver().query(uri, null, null, null, null);

    cursor.moveToFirst();
    if(cursor!=null && cursor.moveToFirst()){
    String document_id = cursor.getString(0);
    document_id = document_id.substring(document_id.lastIndexOf(":") + 1);
    cursor.close();

    cursor = getContentResolver().query(
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
    cursor.moveToFirst();
    path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
    cursor.close();
    }
    return path;
}

1 个答案:

答案 0 :(得分:0)

您的光标指针移动到另一个位置。您需要更改以下内容,

cursor.moveToFirst();
    if(cursor!=null && cursor.moveToFirst()){

if(cursor!=null && cursor.moveToFirst()){
...
}

因此,您需要在if条件之前移除cursor.moveToFirst();