Android 媒体存储未返回 phone 中的所有内部存储图像。它只显示图像锁屏和墙纸图像。任何解决方案?

Android mediastore not returning all internal storage images in phone. It is only showing images lockscreen and wallpaper images. Any solution?

请给我一个从 android phone 的内部和外部存储中加载所有图像的解决方案? 我下面的方法 returns 只有壁纸和锁屏图像。为了进行测试,我使用的是带有 android v6.0 os 且未插入外部存储的 mi redmi note 3。 请给我最新的解决方案。我是 android.

的初学者
public ArrayList<String> getImagePaths() {
            ArrayList<String> resultIAV = new ArrayList<String>();
            URI u = MediaStore.Images.Media.INTERNAL_CONTENT_URI;

            Cursor c = getContentResolver().query(u, projection, null,
                    null, null);

            column_index_data = c.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);

            while (c.moveToNext()) {
                absolutePathOfImage = c.getString(column_index_data);
                resultIAV.add(absolutePathOfImage);
            }

            return resultIAV;
    }

使用它从内部和外部存储中获取所有图像,不要忘记添加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 清单文件中的权限。

int dataColumnIndex;
int bucketColumnIndex;
int displayNameColumnIndex;
String GalleryThumbnail_Path;
String bucket;
String displayName;
int imageCounter = 0;

Thread getImages = new Thread(new Runnable() {
    @Override
    public void run() {
        String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media.DATE_TAKEN,
                MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.BUCKET_DISPLAY_NAME
        };
        String orderBy = MediaStore.Images.Media.DATE_TAKEN;
        Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
        try {
            Cursor cursor = context.getContentResolver().query(uri, columns, null, null, orderBy);
            assert cursor != null;
            int mCount = cursor.getCount();
            for (int i = mCount - 1; i >= 0; i--) {
                if (imageCounter <= 370) {
                    cursor.moveToPosition(i);
                    dataColumnIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
                    bucketColumnIndex = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
                    displayNameColumnIndex = cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME);
                    GalleryThumbnail_Path = cursor.getString(dataColumnIndex);
                    bucket = cursor.getString(bucketColumnIndex);
                    displayName = cursor.getString(displayNameColumnIndex);
                    myimagesPath.add(GalleryThumbnail_Path);
                    myStorage.add(bucket + "-->" + displayName);
                    imageCounter++;
                    Log.e("Recents " + i + "-->>", "Added to bucket");
                } else {
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

这也适用于 Android 7.1.2(我用于开发的 OnePlus One)