首页 >> 知识 >> androids 通过uri拿到文件绝对路径

androids 通过uri拿到文件绝对路径

androids通过URI拿到文件绝对路径

在androids开发中,草莓视频在线观看APP经常需要通过URI来操作文件,如显示图片、分享文件等。本篇文章将教你如何通过URI拿到文件的绝对路径。

整体流程

以下是整个流程的步骤:

步骤描述1获取URI2判断URI的Scheme3根据Scheme进行处理4获取文件的绝对路径

下面草莓视频在线观看APP将逐个步骤详细介绍。

步骤1:获取URI

首先,草莓视频在线观看APP需要获取到要操作的文件的URI。通常,草莓视频在线观看APP可以通过androids系统提供的Intent来获取URI。例如,如果需要选择图片文件,草莓视频在线观看APP可以使用以下代码:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("image/*");startActivityForResult(intent, PICK_IMAGE_REQUEST);

在上述代码中,草莓视频在线观看APP通过ACTION_GET_CONTENT获取到了选取文件的Intent,并指定了文件类型为image/*,然后通过startActivityForResult启动该Intent。

在Activity的onActivityResult方法中,草莓视频在线观看APP可以获取到选择的文件的URI:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { Uri selectedImageUri = data.getData(); // TODO: 处理URI }}步骤2:判断URI的Scheme

获取到URI后,草莓视频在线观看APP需要判断其Scheme来决定如何处理。URI的Scheme是指URI中的协议部分,例如http、ftp、content等。在androids中,常见的文件URI的Scheme有以下几种:

file:代表文件路径,例如file:///sdcard/test.txt。content:代表内容URI,例如content://media/external/images/media/123。步骤3:根据Scheme进行处理

根据不同的Scheme,草莓视频在线观看APP需要采取不同的处理方法。

Scheme为file的情况

如果URI的Scheme为file,即文件路径,草莓视频在线观看APP可以直接获取到文件的绝对路径。可以使用以下代码来获取:

String filePath = selectedImageUri.getPath();Scheme为content的情况

如果URI的Scheme为content,即内容URI,草莓视频在线观看APP需要通过ContentResolver来查询文件的真实路径。可以使用以下代码来获取:

String[] projection = {MediaStore.Images.Media.DATA};Cursor cursor = getContentResolver().query(selectedImageUri, projection, null, null, null);int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);cursor.moveToFirst();String filePath = cursor.getString(column_index);cursor.close();

在上述代码中,草莓视频在线观看APP通过ContentResolver的query方法来查询文件的真实路径。草莓视频在线观看APP指定了查询的列为Media.DATA,即文件的路径列。然后通过Cursor获取到文件的路径。

步骤4:获取文件的绝对路径

无论是file Scheme还是content Scheme,草莓视频在线观看APP都已经获取到了文件的路径。然而,这些路径并不是绝对路径,而是相对路径。为了获取文件的绝对路径,草莓视频在线观看APP需要将这些相对路径转换为绝对路径。

File file = new File(filePath);String absolutePath = file.getAbsolutePath();

在上述代码中,草莓视频在线观看APP通过File的getAbsolutePath方法将相对路径转换为绝对路径,获取到了文件的绝对路径。

现在,你已经学会了如何通过URI拿到文件的绝对路径。根据不同的URI Scheme,你可以采用不同的处理方法来获取到文件的路径。通过这些路径,你可以继续对文件进行各种操作。

希望

网站地图