Android : 从画廊获取照片总是 returns 位图而不是 uri
Android : Get photo from gallery always returns bitmap not 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);
然后在我的 ActiviyResult() 中:
if (requestCode == RESULT_LOAD_IMAGE && data != null) {
final Bundle extras = data.getExtras();
if (extras != null) {
//Get image
Bitmap profilePicBitmap = extras.getParcelable("data");
...
我尝试通过这样做来获取 uri:
data.getData()
但它总是 returns null
问题是我需要位图在设备上的路径,以便我可以将它上传到其他地方...但是我无法在不将其转换为 uri 的情况下获取它的路径。要转换为 uri,您必须请求写入外部存储的权限,请参见此处:(
but it always returns null
该行为将取决于设备及其应用程序。
我怀疑如果你摆脱那些没有证件的额外人员,你的运气会更好。据推测,您不是使用图像裁剪库,而是试图让 ACTION_PICK
activity 进行裁剪。这有两个问题:
不需要 ACTION_PICK
activity 进行任何裁剪,因为这些附加功能不是 Android SDK 的一部分。
我的猜测是,由于裁剪后的图像不作为文件存在,因此他们 return 通过 "data"
extra(这也超出了 ACTION_PICK
)
所以,摆脱那些额外的东西。如果要裁剪图片,use an image-cropping library.
我叫:
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);
然后在我的 ActiviyResult() 中:
if (requestCode == RESULT_LOAD_IMAGE && data != null) {
final Bundle extras = data.getExtras();
if (extras != null) {
//Get image
Bitmap profilePicBitmap = extras.getParcelable("data");
...
我尝试通过这样做来获取 uri:
data.getData()
但它总是 returns null
问题是我需要位图在设备上的路径,以便我可以将它上传到其他地方...但是我无法在不将其转换为 uri 的情况下获取它的路径。要转换为 uri,您必须请求写入外部存储的权限,请参见此处:(
but it always returns null
该行为将取决于设备及其应用程序。
我怀疑如果你摆脱那些没有证件的额外人员,你的运气会更好。据推测,您不是使用图像裁剪库,而是试图让 ACTION_PICK
activity 进行裁剪。这有两个问题:
不需要
ACTION_PICK
activity 进行任何裁剪,因为这些附加功能不是 Android SDK 的一部分。我的猜测是,由于裁剪后的图像不作为文件存在,因此他们 return 通过
"data"
extra(这也超出了ACTION_PICK
)
所以,摆脱那些额外的东西。如果要裁剪图片,use an image-cropping library.