2017-12-29 15 views
-1

画像をアップロードしようとすると、以下のエラーミッションが表示されます。コンパイルする前に、SDK26を正常に動作させるにはAndroid.database.CursorIndexOutOfBoundsException:インデックス0が要求されました

私はこのライブラリを使って画像をアップロードしています: 'net.gotev:uploadservice:2.1'どうすればいいですか?

ある、getPath()メソッド:

//method to get the file path from uri 
public String getPath(Uri uri) { 
    Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
    cursor.moveToFirst(); 
    String document_id = cursor.getString(0); 
    document_id = document_id.substring(document_id.lastIndexOf(":") + 1); 
    cursor.close(); 

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

    return path; 
} 

uploadMultiPart()メソッド:

public void uploadMultipart() { 

      String path = getPath(filePath); 

      //Uploading code 
      try { 
       String uploadId = UUID.randomUUID().toString(); 
       //Creating a multi part request 
       new MultipartUploadRequest(this, uploadId, AppConfig.RECEIPT_URL) 
         .addFileToUpload(path, "image") //Adding file 
         .addParameter("emp_id", emp_id) //Adding text parameter to the request 

         .setNotificationConfig(new UploadNotificationConfig()) 
         .setMaxRetries(7) 
         .startUpload(); //Starting the upload 
       Toast.makeText(getApplicationContext(), 
         "Upload Successfull", Toast.LENGTH_LONG) 
         .show(); 

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

} 

ここに私のエラーコードです:

FATAL EXCEPTION: main 
Process: com.indore.ddagro, PID: 6609 
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.indore.ddagro.activity.RecepitActivity.getPath(RecepitActivity.java:230) 
    at com.indore.ddagro.activity.RecepitActivity.uploadMultipart(RecepitActivity.java:153) 
    at com.indore.ddagro.activity.RecepitActivity.onClick(RecepitActivity.java:276) 
    at android.view.View.performClick(View.java:6256) 
    at android.view.View$PerformClick.run(View.java:24697) 
    at android.os.Handler.handleCallback(Handler.java:789) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
Force finishing activity com.indore.ddagro/.activity.RecepitActivity 
Showing crash dialog for package com.indore.ddagro u0 
+1

以下のようなので、それは –

+0

'android.database.CursorIndexOutOfBoundsException空である理由を探し、if conditionでそれを確認しgetPath()にヌルfilepathを渡しているかもしれ、サイズが0の場合、カーソルは行を返しませんでした(**サイズは0 **です)。 –

答えて

0

エラーの理由があることですデータベースでの検索では、クエリメソッドで0行が返されます。

ファースト・ケース:問合せメソッドのすべてのパラメータにnullを渡すため、表には何もありません。

第2のケース:もう1つのクエリでも、クエリメソッドで渡されたパラメータを持つ特定のテーブルで何も検索されません。またはテーブルも空です。

第3のケース:あなたのコンテンツプロバイダには何かがあるかもしれませんが、それについてはわかりません。インデックス0は、要求された:

0

はあなたが私はあなたのカーソルが空だと思う

String path = ""; 

    if (!Uri.EMPTY.equals(filePath)) { 

     path = getPath(filePath); 
    }else{ 
     Toast.makeText(this, "Image not selected!", Toast.LENGTH_SHORT).show(); 
    } 
+0

私はこれを試してみましたが、動作しません – Piyu

+0

はこのコードでlogcatで同じエラーですか? – Omi

+0

はい同じエラーが表示されています – Piyu

関連する問題