2016-08-13 19 views
3

私のアプリはAndroidのギャラリーから画像を選んでサーバーにアップロードしたかったのです。このコードは、API lenel 22、すなわち、ロールポップで大きく機能します。しかしは、APIレベル23のNullPointerExceptionで失敗します。 API 23の後に変更はありますか?もしそうなら、それは何ですか?アンドロイドからサーバーに画像をアップロードするApi 23以上

ここに私が使用したコードがあります。

public void onClickAddProfileImage(View v) { 
     Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
     intent.setType("image/*"); 
     startActivityForResult(intent, PICK_PROFILE_PHOTO); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == PICK_PROFILE_PHOTO && resultCode == Activity.RESULT_OK) { 
      uploader.setVisibility(View.VISIBLE); 
      Uri selectedImage = data.getData(); 
      String[] projection = {MediaStore.Images.Media.DATA}; 
      CursorLoader loader = new CursorLoader(this, selectedImage, projection, null, null, null); 
      Cursor cursor = loader.loadInBackground(); 
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      Uri imageUri = Uri.parse(cursor.getString(column_index)); 
      cursor.close(); 
      Intent in = new Intent(); 
      UploadFile file_upload = new UploadFile(this, in); 
      file_upload.execute(); 
     } 
    } 

そして、私はライン

Uri imageUri = Uri.parse(cursor.getString(column_index)); 

に乗っエラーログは、誰もがそれを解決するための任意の提案を与える

 Process: com.webkul.taskapp, PID: 2648 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/image:205520 flg=0x1 }} to activity {com.webkul.taskapp/com.webkul.taskapp.BaseActivity}: java.lang.NullPointerException: uriString 
     at android.app.ActivityThread.deliverResults(ActivityThread.java:3720) 
     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3763) 
     at android.app.ActivityThread.-wrap16(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1403) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
    Caused by: java.lang.NullPointerException: uriString 
     at android.net.Uri$StringUri.<init>(Uri.java:475) 
     at android.net.Uri$StringUri.<init>(Uri.java) 
     at android.net.Uri.parse(Uri.java:437) 
     at com.webkul.taskapp.BaseActivity.onActivityResult(BaseActivity.java:535) 
     at android.app.Activity.dispatchActivityResult(Activity.java:6442) 
     at android.app.ActivityThread.deliverResults(ActivityThread.java:3716) 
     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3763) 
     at android.app.ActivityThread.-wrap16(ActivityThread.java) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1403) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5443) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 

してくださいです。

+0

このサードパーティのライブラリを使用することによってそれを解決しました。またはcursor.getString()== null。あなたがその前にそれをチェックすれば、その例外はありません。 – greenapps

+0

'selectedImage'のタイプは何ですか? – greenapps

+0

'Uri imageUri'。あなたは 'imageUri'を使用していません。 – greenapps

答えて

1

多くのコードでは、UriからUriを構築しようとしています。

data.geData()は、すでにファイルをアップロードするためにInputStreamを開くのに使用できるUriです。

+0

いいえ私はUriを使用することができません.Lollipopバージョンであっても、FileInputStreamで 'data.getData()'を取得しました。 'fileInputStream = new FileInputStream(selectedImage.getPath()); ' そのFileNotFoundExceptionを与えます。 –

+0

FileInputStreamは使用しないでください。私は 'InputStream'と言った。 'InputStream is = getContentResolver()。openInputStream(data.getData());'に変更します。 – greenapps

+0

あなたはブログリンク、要点、または同じものに関する例を共有してください。 –

関連する問題