2017-07-29 2 views
0

ビデオのサムネイルを取得しようとするとこのエラーが発生します。私は5.0.1を実行しているデバイス上でテストするとそこには問題はありませんが、6.0.1でテストが、私はこのエラーを取得する:私のアダプタ内でこのラインにNullPointerException:6.0.1のuriStringのみ

java.lang.NullPointerException: uriString 

エラーポイント:

holder.videoThumb.setImageURI(Uri.parse(thumbathModel.getPath())); 

私はthisポストを見ましたが、サムネイルが既にそこにあるので、私は新しいものを作りたくありません。ここで

は、私は、ビデオを選択して、サムネイルを取得する方法である:

private void selectVideo() 
{ 
    Intent intent = new Intent(); 
    intent.setType("video/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent,"Select Video"),REQUEST_TAKE_GALLERY_VIDEO); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if(requestCode == REQUEST_TAKE_GALLERY_VIDEO && resultCode == RESULT_OK) 
    { 

     this.dbManager.insertThumb(String.valueOf(this._id), getThumbnailPathForLocalFile(this, data.getData()), getPath(data.getData())); 
     this.thumbPathList = this.sqLiteHelper.getAllThumbPath(String.valueOf(this._id)); 
     this.videoPathList = this.sqLiteHelper.getAllVideoPath(String.valueOf(this._id)); 

     VideoAdapter videoAdapter = new VideoAdapter(this, this.thumbPathList, this.videoPathList); 
     videoAdapter.notifyDataSetChanged(); 

    }else{ 
     Toast.makeText(getApplicationContext(), "Failed to select video" , Toast.LENGTH_LONG).show(); 
    } 
} 

public String getPath(Uri uri) { 
    Cursor cursor = getContentResolver().query(uri, new String[]{"_data"}, null, null, null); 
    if (cursor == null) { 
     return null; 
    } 
    int column_index = cursor.getColumnIndexOrThrow("_data"); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

public static String getThumbnailPathForLocalFile(Activity context, Uri fileUri) { 
    long fileId = getFileId(context, fileUri); 

    MediaStore.Video.Thumbnails.getThumbnail(context.getContentResolver(), 
      fileId, MediaStore.Video.Thumbnails.MICRO_KIND, null); 

    Cursor thumbCursor = null; 
    try { 
     thumbCursor = context.managedQuery(
       MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI, 
       thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID + " = " 
         + fileId, null, null); 

     if (thumbCursor.moveToFirst()) { 
      String thumbPath = thumbCursor.getString(thumbCursor 
        .getColumnIndex(MediaStore.Video.Thumbnails.DATA)); 

      return thumbPath; 
     } 
    } 

    return null; 
} 

私の質問:

は、なぜそれがどのようにすることができ、6.0.1に5.0.1といないに取り組んでいますこれを修正しますか?

EDITは私のターゲットSDKには、このリンクを参照してください22

答えて

-1

で、あなたはあなたの答えを得ます。そのURIに問題があります。

https://inthecheesefactory.com/blog/how-to-share-access-to-file-with-fileprovider-on-android-nougat/en

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
         Uri photoURI = null; 
         try { 
          File photoFile = createImageFileWith(); 
          path = photoFile.getAbsolutePath(); 
          photoURI = FileProvider.getUriForFile(Activity_AddLocation.this, 
            BuildConfig.APPLICATION_ID + ".provider", 
            createImageFileWith()); 
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); 
         if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP) { 
          takePictureIntent.setClipData(ClipData.newRawUri("", photoURI)); 
          takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
         } 
         startActivityForResult(takePictureIntent,REQUEST_CODE_CAMERA); 
        } 
       }else{ 
        Intent intent = new Intent(
          android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
        fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); 

        intent.putExtra(
          android.provider.MediaStore.EXTRA_OUTPUT, 
          fileUri); 
        try { 

         startActivityForResult(intent, 
           REQUEST_CODE_CAMERA); 

あなたがカメラ

+0

を開くためにクリックしたときに、私は、SDK 22をターゲットにしています、これを試す - そのポストから「この行動は、あなたが24以上にアプリのtargetSdkVersionを変更する場合にのみ発生します" – ClassA

+0

ターゲットSDK 24以上になる –

+0

あなたの答えは私の質問には全く関係しません。私はtargetSdkを変更したくないし、画像をキャプチャしないし、自分のアプリケーションでカメラを使うこともしない。私はギャラリーからビデオファイルを選択.....私の質問を最初にお読みください。 – ClassA

関連する問題