Android 调用操作\u PICK时,附加值为空

Android 调用操作\u PICK时,附加值为空,android,android-intent,android-gallery,Android,Android Intent,Android Gallery,我打电话给画廊的目的如下: Intent picturePickerIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI); picturePickerIntent.setType("image/*"); picturePickerIntent.putExtra("crop", "true"); picturePick

我打电话给画廊的目的如下:

        Intent picturePickerIntent = new Intent(Intent.ACTION_PICK,
            MediaStore.Images.Media.INTERNAL_CONTENT_URI);
    picturePickerIntent.setType("image/*");
    picturePickerIntent.putExtra("crop", "true");
    picturePickerIntent.putExtra("aspectX", 1);
    picturePickerIntent.putExtra("aspectY", 1);
    picturePickerIntent.putExtra("outputX", PHOTO_SIZE);
    picturePickerIntent.putExtra("outputY", PHOTO_SIZE);
    picturePickerIntent.putExtra("return-data", true);

    startActivityForResult(picturePickerIntent, IMAGE_GALERY_REQUEST);
然后我得到结果:

if (resultCode == RESULT_OK) {
        if (requestCode == IMAGE_GALERY_REQUEST) {
            Bundle extras = data.getExtras();
            if (extras != null) {
                bm = extras.getParcelable("data");
                photoView.setImageBitmap(bm);
                if (avatarSelected != null) {
                    avatarSelected.setBackgroundColor(Color.TRANSPARENT);
                }
                this.avatarSelected = null;
            }else{
                // Sometimes, the photo isn't loaded
                Toast.makeText(this, "The photo has not been loaded", Toast.LENGTH_SHORT).show();
            }
在某些设备上,这段代码就像一个符咒,在其他设备上,它每次都会显示祝酒词,在6.0模拟器上,它几乎每两次工作一次


我做错了什么?

代码似乎没有问题,但您确实忘记了动态权限,它将始终返回null。请阅读此内容

基本上,您需要动态请求android 6及更高版本的权限

if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {


    } else {

        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

    }
}