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);
}
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories