2017-08-06 13 views
-1

我使用分段上传在图像上传的查询提交表单,在我的情况下图像上传是可选的,所以当我不使用图像时抛出空指针,所以我需要它应该是可选的java.lang.NullPointerException:uri在com.android.internal.util.Preconditions.checkNotNull

public String getPath(Uri uri) { 
     Cursor cursor = AskQueryActivity.this.getContentResolver().query(uri, null, null, null, null); // this line throws error 
     assert cursor != null; 
     cursor.moveToFirst(); 
     String document_id = cursor.getString(0); 
     document_id = document_id.substring(document_id.lastIndexOf(":") + 1); 
     cursor.close(); 

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

     return path; 
    } 

错误的logcat

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.admin.lorem.ipsum, PID: 3818 
        java.lang.NullPointerException: uri 
         at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:60) 
         at android.content.ContentResolver.query(ContentResolver.java:474) 
         at android.content.ContentResolver.query(ContentResolver.java:434) 
+0

这很明显,你的URI是空的,调试你的应用程序,看看为什么。 –

+0

@ S.Aslpour是它的空,因为我说它在null,当我不使用图像上传 – Omi

+0

所以添加一个if和检查它为空时,将您的光标设置为null: –

回答

0

做URI无效检查和的getPath返回null的URI为空。如果uri为空,避免使用getPath方法做任何事情。

getPath的调用者必须对该null作出反应,并在结果为null时执行需要做的任何操作。

或者,如果uri为空,则避免调用者执行getPath。