2017-07-17 148 views
1

我必須通過代碼來獲得外部所有圖像由MediaStore.Images.Media.EXTERNAL_CONTENT_URI和內部相同(但內部而不是外部)MediaStore.Images.Media.INTERNAL_CONTENT_URI返回空指針

在我的設備的Android 7.0版外部所有圖像和內部外部光標一樣問題的標題內返回空指針返回,我是100%,我有大量的圖片在內部

大怪習題 相同的代碼工作正常與其他設備的Android 5.1版內部收益內部圖像和外部回報它是自己的imgs所以問題在哪裏我不'弄不明白....

如何相同的代碼工作在不同的2個實設備(這裏沒有模擬器)

兩個光標的代碼如下

cursorEx = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
        projection, null, null, DATE_DESC_SORT_ORDER); 

cursorIn = getContentResolver().query(MediaStore.Images.Media.INTERNAL_CONTENT_URI, 
        projection, null, null, DATE_DESC_SORT_ORDER); 

回答

0

也許你沒有問在Android 7權限。它的強制性!您可以申請許可,或針對一個SDK小於22

if (ContextCompat.checkSelfPermission(ProfileActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) 
      != PackageManager.PERMISSION_GRANTED) { 

     // Should we show an explanation? 
     if (ActivityCompat.shouldShowRequestPermissionRationale(ProfileActivity.this, 
       Manifest.permission.READ_EXTERNAL_STORAGE)) { 
      // Explain to the user why we need to read the contacts 
     } 

     ActivityCompat.requestPermissions(ProfileActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
       MY_PERMISSIONS_REQUEST); 

     // MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE is an 
     // app-defined int constant that should be quite unique 

     return; 
    }else { 
     Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     intent.setType("image/*"); 
     startActivityForResult(Intent.createChooser(intent, 
       "Selecione a foto "), select_image_code); 
    } 
+0

當然,我請求允許否則會拋出異常......對不起,但不是解決..謝謝 –