2017-09-23 55 views
0

这是我在点击监听器:如何从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(零)。

回答

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

或者从Convert content:// URI to actual path in Android 4.4

+0

使用的代码谢谢你,我傻我因此未包括'getRealPathFromURI()',但感谢,让我试试吧 –