2017-08-06 7 views
-1

私は画像をアップロードするためにmultipartアップロードを使用しています。私の場合、画像のアップロードはオプションです。画像を使用しないときはヌルポインタをスローし、私はそれが 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がnullであることはかなり明らかです。あなたのアプリをデバッグし、その理由を確認してください。 –

+0

@ S.Aslpourはい画像のアップロードを使用していないときにヌルと言ったようにヌルですので、 – Omi

+0

を追加して、それをヌルにしてチェックしてください。 –

答えて

0

あるべき必要があるので、URIにnullをチェックし、URIがnullの場合ある、getPathからnullを返します。 uriがnullの場合は、getPathメソッドで何もしないでください。

getPathの呼び出し元は、そのnullに反応し、resultがnullの場合に必要な処理を実行する必要があります。

また、uriがnullの場合、呼び出し側がgetPathを実行しないようにしてください。