legongju.com
我们一直在努力
2025-01-11 02:37 | 星期六

Android FileChooser的存储路径如何设置

在 Android 中,FileChooser 的存储路径可以通过 Intent 来设置。以下是一个简单的示例,展示了如何使用 FileChooser 选择一个文件并指定存储路径:

  1. 首先,在 AndroidManifest.xml 文件中添加读取外部存储的权限:

  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 filePath = getPathFromUri(this, uri);
            // 使用 filePath 进行相应操作
        }
    }
}
  1. 最后,实现一个辅助方法 getPathFromUri 来获取文件的路径:
public String getPathFromUri(Context context, Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = null;

    try {
        cursor = context.getContentResolver().query(uri, projection, null, null, null);
        if (cursor != null && cursor.moveToFirst()) {
            int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            return cursor.getString(columnIndex);
        }
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }

    return null;
}

现在,当你调用 openFileChooser() 方法时,将会弹出一个文件选择器,用户可以从中选择一个文件。所选文件的路径将通过 onActivityResult 方法返回。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/87838.html

相关推荐

  • android studio安装不了如何解决

    android studio安装不了如何解决

    在尝试安装Android Studio时,可能会遇到一些问题。以下是一些常见的原因及其解决方案:
    常见原因 系统环境不兼容:Android Studio需要在64位的Windows、ma...

  • android怎么获取进程id

    android怎么获取进程id

    在Android中,你可以使用android.os.Process类来获取当前进程的ID。以下是一个简单的示例:
    import android.os.Process; public class MainActivity extend...

  • android图片如何压缩到指定大小

    android图片如何压缩到指定大小

    在Android中,将图片压缩到指定大小需要遵循以下步骤: 首先,从文件或资源中获取原始图片。你可以使用BitmapFactory类的decodeFile()或decodeResource()方法来实...

  • android button如何设置图片

    android button如何设置图片

    在Android中,为按钮设置图片有两种方法:使用XML布局文件或者使用Java/Kotlin代码。
    方法一:使用XML布局文件 首先,将图片放入项目的res/drawable文件夹中...

  • MySQL Sphinx如何提升搜索效率

    MySQL Sphinx如何提升搜索效率

    MySQL Sphinx是一个开源的全文检索引擎,它可以显著地提升数据库的搜索效率。通过利用Sphinx,可以实现比直接使用MySQL更快的搜索速度,特别是在处理大量数据时。...

  • MySQL合并后怎样更新应用程序

    MySQL合并后怎样更新应用程序

    在将数据库从一个服务器迁移到另一个服务器时,可能需要对应用程序进行一些更改以确保它们能够正常工作 更新数据库连接信息:首先,您需要更新应用程序中的数据库...

  • MySQL合并是否需要停机维护

    MySQL合并是否需要停机维护

    MySQL合并操作不一定需要停机维护,这取决于所采用的合并策略和技术。以下是一些相关介绍:
    不停机维护的技术和方法 使用Percona XtraBackup进行热备份:Pe...

  • 哪些因素会影响MySQL合并速度

    哪些因素会影响MySQL合并速度

    MySQL合并速度主要受以下几个因素的影响:
    聚合计算的性能消耗 描述:GROUP BY语句通常会伴随着聚合函数(如COUNT、SUM、AVG等),对数据进行聚合计算,这会...