画像をアップロードしようとすると、以下のエラーミッションが表示されます。コンパイルする前に、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
以下のようなので、それは –
'android.database.CursorIndexOutOfBoundsException空である理由を探し、
if condition
でそれを確認しgetPath()
にヌルfilepath
を渡しているかもしれ、サイズが0の場合、カーソルは行を返しませんでした(**サイズは0 **です)。 –