Android 学习笔记十三 通过绝对路径得到uri

来源:互联网 发布:网络诈骗手段及防范 编辑:程序博客网 时间:2024/06/05 14:48
private static Uri queryMedia(String mediaPath, String path, Context context) {        String StringUri = null;        ContentResolver mContentResolver = context.getContentResolver();        if (TextUtils.isEmpty(path)) {            return null;        }        StringUri = "content://media/external/" + path + "/media";                        Log.d(TAG,"mediaPath:"+mediaPath);        Log.d(TAG,"path:"+path);        Log.d(TAG,"path:"+StringUri);                String searchString = mediaPath;        Cursor c = null;        try {            searchString = Uri.decode(searchString).trim().replace("'", "''");            Uri uri = Uri.parse(StringUri);            c = mContentResolver.query(uri, new String[] {                    "_id"            }, "_data='" + searchString + "'", null, null);            if (c != null && c.moveToNext()) {                int id = c.getInt(0);                return Uri.withAppendedPath(uri, String.valueOf(id));            }        } finally {        if (c != null) {        c.close();        }        }        return null;    }

      通过上面的方法可以实现对于文件uri 的查找


    下面是一个具体使用的例子

   其中path 为文件的绝对路径

if (mimetype.startsWith("image/")) {path = queryMedia(path.toString().substring(7, path.toString().length()),"images", context);Log.d(TAG, "6666666 uri = " + path);Intent activityIntent = new Intent(Intent.ACTION_VIEW);mimetype = mimetype.toLowerCase();activityIntent.setDataAndType(path, mimetype);activityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);try {if (V)Log.d(TAG, "ACTION_VIEW intent sent out: " + path+ " / " + mimetype);context.startActivity(activityIntent);} catch (ActivityNotFoundException ex) {if (V)Log.d(TAG,"no activity for handling ACTION_VIEW intent:  "+ mimetype, ex);}}








0 0