如何从PhotoPicker获得的图像尺寸意向
问题描述:
这是我在点击监听器:如何从PhotoPicker获得的图像尺寸意向
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(Intent.createChooser(intent, "Complete action using"), PHOTO_PICKER_REQUEST_CODE);
}
这里是我的OnActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PHOTO_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
File imageFile = new File(getRealPathFromURI(selectedImageUri));
long length = imageFile.length();
length = length/1024;
Log.d(TAG, "onActivityResult: ImageSize " + length +" Kb");
}
}
IMAGESIZE总是返回0(零)。
答
您可能缺少清单中的权限。您需要添加以下权限在AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
或者,如果你靶向的Android 6.0(API级别23)以上,则需要Requesting Permissions at Run Time
并请检查您的getRealPathFromURI()
方法。我已经与这下面的代码测试,它的工作:
public String getRealPathFromURI(Uri contentUri) {
String res = null;
String[] proj = { MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(contentUri, proj, "", null, "");
if (cursor.moveToFirst()) {
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
res = cursor.getString(column_index);
}
cursor.close();
return res;
}
使用的代码谢谢你,我傻我因此未包括'getRealPathFromURI()',但感谢,让我试试吧 –