MediaStore.Images.Media.INTERNAL_CONTENT_URI返回空光标

时间:2017-07-17 21:06:53

标签: android mediastore

我有代码从MediaStore.Images.Media.EXTERNAL_CONTENT_URI获取外部所有图像,内部相同(但内部而非外部)

在我的设备android版本7.0外部和内部返回的所有图像由外部光标和问题标题内部返回空光标我是100%,我在内部有很多图像

Big Strange Prob 相同的代码适用于其他设备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);

1 个答案:

答案 0 :(得分:0)

可能你没有在android 7中请求许可。它是强制性的!您可以要求许可,也可以定位低于22的SDK。

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);
    }