您的位置:首页 > 移动开发 > Android开发

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

2016-07-12 12:06 651 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android android开发 uri