Android实现兼容所有手机从本地SD上拿到到URL

来源:互联网 发布:江苏大学网络教学平台 编辑:程序博客网 时间:2024/04/30 19:26

     我们有时从本地SD上去获取图片,写好了所有代码,高高兴兴的去运行,如在小米手机可以获取的图片的地址,  然后你在把你的程序放在华为手机上去运行,结果你发现跟你返回个Null,气得你要死,这到底是为什呢? 因为我们的手机制造厂家都定制了自己的一套系统。但是不用怕,我们有兼容所有手机的方法,这样妈妈就这也不用担心我们写不来代码了。

 

 public static String getImageRealPathFromURI(Uri contentURI,Context context) {        String result = "";        int idx = 0;        Cursor cursor = context.getContentResolver().query(contentURI, null, null, null, null);        if (cursor == null) { // Source is Dropbox or other similar local file path            result = contentURI.getPath();        } else {            cursor.moveToFirst();            String document_id = cursor.getString(0);            MyLogUtils.d(Constants.LOG_TAG,"cursor:"+document_id);            if (document_id.contains(":"))            {                String id = document_id.split(":")[1];                String[] column = { MediaStore.Images.Media.DATA };                String sel = MediaStore.Images.Media._ID + "=?";                Cursor cursorByColon =context. getContentResolver().                        query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,                                column, sel, new String[]{ id }, null);                int columnIndex = cursorByColon.getColumnIndex(column[0]);                if (cursorByColon.moveToFirst()) {                    result = cursorByColon.getString(columnIndex);                }                cursorByColon.close();            }            else            {                idx = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);                result = cursor.getString(idx);            }            cursor.close();        }        return result;    }


 

0 0
原创粉丝点击