3 回答
TA贡献2065条经验 获得超13个赞
将content:// URI转换为Android 4.4中的实际路径
在任何Android版本上都没有可靠的方法来执行此操作。A content:// Uri不必代表文件系统上的文件,更不用说您可以访问的文件了。
Android 4.4提供存储框架的更改只是增加了您遇到content:// Uri值的频率。
如果得到a content:// Uri,请使用ContentResolver和方法(例如openInputStream()和)使用它openOutputStream()。
TA贡献2011条经验 获得超2个赞
我也一直面临这个问题,但就我而言,我想做的就是为Gallery指定一个具体的Uri,以便以后可以使用裁剪。看起来在新的KitKat文档浏览器中,除非您在导航抽屉中选择galery,然后像您说的那样直接从那里打开图像或文件,否则我们将无法再这样做。
在Uri情况下,从文档浏览器打开时,您仍然可以检索路径。
Intent dataIntent= new Intent(Intent.ACTION_GET_CONTENT);
dataIntent.setType("image/*"); //Or whatever type you need
然后在onActivityResult中:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ACTIVITY_SELECT_IMAGE && resultCode == RESULT_OK) {
myUri = data.getData();
String path = myUri.getPath();
openPath(myUri);
}
}
如果您需要然后使用该路径打开文件,则只需使用Content Resolver:
public void openPath(Uri uri){
InputStream is = null;
try {
is = getContentResolver().openInputStream(uri);
//Convert your stream to data here
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
- 3 回答
- 0 关注
- 497 浏览
添加回答
举报