Android:Get photo from gallery始终返回位图而不是uri

Android:Get photo from gallery始终返回位图而不是uri,android,uri,android-bitmap,android-gallery,Android,Uri,Android Bitmap,Android Gallery,我呼叫: Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI); intent.setType("image/*"); intent.putExtra("crop", "true"); intent.putExtra("scale", true); intent.putE

我呼叫:

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

startActivityForResult(intent, code);
if (requestCode == RESULT_LOAD_IMAGE && data != null) {

                final Bundle extras = data.getExtras();
                if (extras != null) {
                //Get image
                Bitmap profilePicBitmap = extras.getParcelable("data");
                  ...
data.getData()
然后在我的活动中result():

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

startActivityForResult(intent, code);
if (requestCode == RESULT_LOAD_IMAGE && data != null) {

                final Bundle extras = data.getExtras();
                if (extras != null) {
                //Get image
                Bitmap profilePicBitmap = extras.getParcelable("data");
                  ...
data.getData()
我尝试通过以下操作获取uri:

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

startActivityForResult(intent, code);
if (requestCode == RESULT_LOAD_IMAGE && data != null) {

                final Bundle extras = data.getExtras();
                if (extras != null) {
                //Get image
                Bitmap profilePicBitmap = extras.getParcelable("data");
                  ...
data.getData()
但它总是返回null

问题是我需要设备上位图的路径,这样我就可以将它上传到其他地方…但是如果不将它转换为uri,我就无法获得它的路径。要转换为uri,您必须请求写入外部存储的权限,请参见:(),我希望避免这种情况

但它总是返回null

这种行为将取决于设备及其应用程序

我想如果你把那些没有证件的临时演员除掉,你会有更好的运气。您可能不使用图像裁剪库,而是尝试让
操作\u PICK
活动进行裁剪。这有两个问题:

  • 没有要求
    ACTION\u PICK
    活动进行任何裁剪,因为这些额外功能不是Android SDK的一部分

  • 我的猜测是,由于裁剪后的图像不作为文件存在,因此它们通过
    “data”
    extra返回它(这也超出了
    ACTION\u PICK
    的记录行为)

  • 所以,扔掉那些多余的东西。如果要裁剪图像