怎样在Android中使用FileChooser

avatar
作者
猴君
阅读量:0

在 Android 中,使用 FileChooser 可以让用户从设备中选择文件

  1. 首先,需要在 AndroidManifest.xml 文件中添加读取外部存储的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
  1. 然后,在你的 Activity 或 Fragment 中创建一个方法来启动 FileChooser。例如:
private static final int FILE_PICK_REQUEST_CODE = 1;  private void openFileChooser() {     Intent intent = new Intent(Intent.ACTION_GET_CONTENT);     intent.setType("*/*");     intent.addCategory(Intent.CATEGORY_OPENABLE);     intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);      try {         startActivityForResult(                 Intent.createChooser(intent, "选择文件"),                 FILE_PICK_REQUEST_CODE);     } catch (android.content.ActivityNotFoundException ex) {         Toast.makeText(this, "请安装文件管理器", Toast.LENGTH_SHORT).show();     } } 
  1. 接下来,重写 onActivityResult 方法以处理 FileChooser 返回的结果:
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {     super.onActivityResult(requestCode, resultCode, data);      if (requestCode == FILE_PICK_REQUEST_CODE && resultCode == RESULT_OK && data != null) {         Uri uri = data.getData();         if (uri != null) {             // 在这里处理所选文件的 Uri,例如获取文件名和读取内容等             String fileName = getFileNameFromUri(this, uri);             // ...         }     } } 
  1. 实现 getFileNameFromUri 方法,用于从 Uri 中获取文件名:
public String getFileNameFromUri(Context context, Uri uri) {     String fileName = "";     if (uri.getScheme().equalsIgnoreCase("content")) {         Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);         try {             if (cursor != null && cursor.moveToFirst()) {                 fileName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));             }         } finally {             cursor.close();         }     }     if (fileName.isEmpty()) {         fileName = uri.getPath();         int cut = fileName.lastIndexOf('/');         if (cut != -1) {             fileName = fileName.substring(cut + 1);         }     }     return fileName; } 
  1. 最后,当用户需要选择文件时,调用 openFileChooser() 方法即可。

注意:在 Android 10 及更高版本中,外部存储机制发生了变化。为了访问外部存储,需要在运行时请求分区存储权限。具体信息可参考 官方文档

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!