相关疑难解决方法(0)

从mediastore获取URI的文件名和路径

onActivityResult从mediastore图像选择返回,我可以使用以下内容获取图像的URI:

Uri selectedImage = data.getData();
Run Code Online (Sandbox Code Playgroud)

将其转换为字符串可以得到:

content://media/external/images/media/47
Run Code Online (Sandbox Code Playgroud)

或者路径给出:

/external/images/media/47
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法找到将其转换为绝对路径的方法,因为我想将图像加载到位图而不必将其复制到某处.我知道这可以使用URI和内容解析器完成,但这似乎在重新启动手机时中断,我想MediaStore在重新启动之间不会保持其编号相同.

android uri absolute-path mediastore

376
推荐指数
12
解决办法
32万
查看次数

Android如何使用MediaScannerConnection scanFile

我将图像添加到SDCARD上的文件夹中.由于图像和我的文件夹在图库中没有立即可见,我试图让MediaScannerConnection更新并在图库中显示文件夹/图像.这对我来说不是很好,因为Gallery中没有任何内容.我只在Eclipse AVD中测试.

我没有看到很多关于这个的讨论,因为scanFile是自api8以来的新功能.有人能说明这是怎么做的吗?

我在服务和Activity中尝试它但在onScanCompleted时继续获得uri = null.

android

39
推荐指数
6
解决办法
8万
查看次数

ContentResolver - 如何从Uri获取文件名

我用Intent ACTION_GET_CONTENT调用startActivityForResult.一些应用程序使用此Uri返回数据:

内容://媒体/外部/图像/媒体/ 18122

我不知道它是图像,视频还是一些自定义内容.如何使用ContentResolver从此Uri获取实际文件名或内容标题?

android android-contentresolver

13
推荐指数
3
解决办法
2万
查看次数

Android Kotlin:使用从文件选择器中选择的文件名获取 FileNotFoundException?

我正在开发一个 Android 应用程序,其中一项功能是让用户选择要打开的文件(我想打开纯文本 .txt 文件)。我之前使用 Java 开发过 Android 应用程序,但对于这个应用程序,我使用的是 Kotlin,这是我第一次使用 Kotlin。

我目前让应用程序显示一个文件选择器,让用户点击他们想要打开的文件。然后我尝试使用 File 对象打开文件并执行 forEachLine 循环。但出于某种原因,它抛出一个 java.io.FileNotFoundException (没有这样的文件或目录)与从文件选择器中选择的文件。我不确定出了什么问题,是否必须进行一些转换才能转换文件路径?

我的“加载”按钮的代码:

val btn_load: Button = findViewById<Button>(R.id.btn_load_puzzle)
    btn_load.setOnClickListener {
        val intent = Intent()
            .setType("*/*")
            .setAction(Intent.ACTION_GET_CONTENT)

        startActivityForResult(Intent.createChooser(intent, "Select a file"), 111)
    }
Run Code Online (Sandbox Code Playgroud)

我响应文件选择的功能:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    // Selected a file to load
    if ((requestCode == 111) && (resultCode == RESULT_OK)) {
        val selectedFilename = data?.data //The uri with the location of the file
        if (selectedFilename …
Run Code Online (Sandbox Code Playgroud)

android exception file filenotfoundexception kotlin

7
推荐指数
3
解决办法
5098
查看次数

从Intent.ACTION_GET_CONTENT到文件的URI

  1. 使用Intent.ACTION_GET_CONTENT启动照片选取器
  2. 检索所选项目的URI
  3. 检索URI的PATH,以便我可以将其发布到我的网络服务器

    用于启动浏览的代码

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    startActivityForResult(intent, BROWSE_IMAGE_REQUEST_CODE);
    
    Run Code Online (Sandbox Code Playgroud)

    用于检索所选图像的代码

    if (RESULT_OK == resultCode &&
                 BROWSE_IMAGE_REQUEST_CODE == requestCode) {
    Uri uri = data.getData();
    
    Run Code Online (Sandbox Code Playgroud)

    要发送到网络服务器的代码

    File file = new File(uri.getPath());
    new FileSystemResourceFile(file);
    
    Run Code Online (Sandbox Code Playgroud)

我目前能够从URI中检索PATH没有概率,/external/images/media/24但由于一些奇怪的原因,文件总是为空,请帮忙吗?

android

6
推荐指数
1
解决办法
2万
查看次数

从Google Drive URI获取文件名

在我的应用程序中,用户可以从相机和图库中选择图像以加载到ImageView中。

我正在使用以下代码打开相关的应用程序以选择图像:

 Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
Run Code Online (Sandbox Code Playgroud)

问题出在Google硬盘上。如果用户从Google云端硬盘中选择图片,则我将获得这样的URI:content://com.google.android.apps.docs.storage.legacy/enc%3DHxtpLaMr66OMOzDOKTRZ-5ed7q7Szj7F7nC0IlxBnV8hx2P1%0A

我能够生成位图,但无法获取文件名。

 InputStream input = context.getContentResolver().openInputStream(uri);
               Bitmap bitmap = BitmapFactory
                        .decodeStream(input);
Run Code Online (Sandbox Code Playgroud)

我需要显示用户选择的文件名。

请帮我从Google驱动器URI中提取图片名称。

android android-imageview google-drive-api android-bitmap google-drive-android-api

1
推荐指数
1
解决办法
1531
查看次数

Android:获取任何文件的文件名和扩展名

我遇到的问题是,我无法从搭载 Android 9 的智能手机上选择的文件中提取文件扩展名。该问题不会出现在搭载 Android 8 或更低版本的设备上。

当用户选择任何类型的文件时,onActivityResult 被调用。在这个方法中,我从 FileUtils 类调用 getPath,所以我可以提取文件扩展名。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Uri uri = new Uri.Builder().build();
    if (resultCode == RESULT_OK) {
        switch (requestCode) {
            case PICKFILE_REQUEST_CODE: {
                String path = new File(data.getData().getPath()).getAbsolutePath();

                if (path != null) {
                    uri = data.getData();
                    path = FileUtils.getPath(getApplicationContext().getContentResolver(), uri);
                    name = path.substring(path.lastIndexOf("."));
                    extension = path.substring(path.lastIndexOf(".") + 1);
                }
                break;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

FileUtils类(来自此 repo)的getPath()通过 URI 评估文件是哪种文件,但对这种情况负责的是以下部分:

public static String …
Run Code Online (Sandbox Code Playgroud)

android android-emulator

-2
推荐指数
1
解决办法
3095
查看次数