您好我正在编写一个应用程序,当用户长按或选择文件(任何类型的文件有或没有扩展名)时它应该出现在共享列表中,我的应用程序应该采取详细信息(我认为URI)并且应该能够将其转换为绝对路径。
作为示例,如果用户通过长按或选择启用共享选项来选择图像文件,我就能够显示我的应用程序。
当我在我的应用程序中打印URI作为吐司时,它显示的路径类似于" content://media...../24"这不是一条绝对的道路。
我已经经历了很多选择,但我还没有清楚地知道如何获得绝对路径。我的应用程序应该支持4.0以上。
需要关注 1.能够收集我的应用程序中的输入,它应该将其转换为绝对路径(如文件浏览器中所示)
如果用户选择了一个文件夹,我应该可以达到1。
一旦我实现了这一点,我应该再次显示为列表条目。在选择条目时,它应该允许显示可用应用程序列表以打开路径。
答案 0 :(得分:1)
你可以这样试试
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
int RESULT_LOAD_IMAGE = 1;
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
&& null != data) {
Uri selectedFile = data.getData();
String wholeID =DocumentsContract.getDocumentId(selectedFile);
// Split at colon, use second item in the array
String id = wholeID.split(":")[1];
String[] column = { MediaStore.Images.Media.DATA };
// where id is equal to
String sel = MediaStore.Images.Media._ID + "=?";
Cursor cursor = getContentResolver().
query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,column, sel, new String[]{ id }, null);
String filePath = "";
int columnIndex = cursor != null ? cursor.getColumnIndex(column[0]) : 0;
if (cursor != null && cursor.moveToFirst()) {
filePath = cursor.getString(columnIndex);
}
if (cursor != null) {
cursor.close();
}
File file = new File(filePath);
}