当前位置: 首页 > 知识库问答 >
问题:

是否有一种方法可以在Android中获得100%正确的文件扩展名,并启用了范围存储?

柳宏深
2023-03-14

我试图在我的Android应用程序中实现文件发送功能(任何文件都是允许的,这些文件不属于我的应用程序)。从action_open_document接收一个inputstream,然后使用从ContentResolverOpenableColumns.display_name中获取的名称创建一个临时file对象,然后发送该文件。我这样做的原因是我使用的第三方API只允许文件对象。

但是openablecolumns.display_name并不能保证我得到文档中所述的具有文件扩展名的文件名。据我所知,在Android的新版本中,没有办法获得文件的实际文件名或物理路径。因此,我必须检查文件名是否包含扩展名,如果不包含,则使用ContentResolver获取文件的MIME类型,并使用MimetypeMap获取最常见的扩展名。这种方法感觉不太可靠,因为我必须依赖ContentResolver正确确定MIME类型和Mimetypemap检索正确的扩展名。获得扩展是至关重要的,至少因为用户应该能够从桌面应用程序下载和打开他们PC上的文件。

那么,是否有可能获得一个100%保证的文件名或至少是文件扩展名,并启用了作用域存储?或者也许有更有效的方法来处理我的情况?我很感激有人帮忙。

共有1个答案

皇甫心思
2023-03-14

试试这个方法,它帮了我:

public static String getFileName(Uri uri, Context context) {
    String result = null;
    if (uri.getScheme().equals("content")) {
        Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
        try {
            if (cursor != null && cursor.moveToFirst()) {
                result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
            }
        } finally {
            cursor.close();
        }
    }
    if (result == null) {
        result = uri.getPath();
        int cut = result.lastIndexOf('/');
        if (cut != -1) {
            result = result.substring(cut + 1);
        }
    }
    return result;
}
 类似资料:
  • 本文向大家介绍PHP获取文件扩展名的4种方法,包括了PHP获取文件扩展名的4种方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP获取文件扩展名的4种方法。分享给大家供大家参考,具体如下: 希望本文所述对大家PHP程序设计有所帮助。

  • 在Java中获得文件扩展名的可靠方法是什么? 我不是在讨论对执行/,因为它对复杂的扩展(如等)毫无用处。(这是所有的库(Commons IO、Guava等)似乎都在做的。我正在寻找一种更复杂/可靠的方法来返回真正的扩展。

  • 问题内容: 我知道你可以打电话 如果它不是可执行文件,则会得到一个异常,但这是不安全的,因为运行可执行文件会产生副作用。 我想只检查扩展名在Windows上就足够了,但是有没有办法我可以读取* nix文件系统上的可执行文件呢? 找出文件在OS中是否可执行的最佳方法是什么? 问题答案: 参见java.io.File.canExecute()

  • 我想要的是,每当数据被推入表中时,我的电子邮件(我已经配置了db_mail并正在工作)上会自动发出警报。 我在数据库和Windows server 2012 R2上拥有sa管理和完全权限

  • 问题内容: 这是一个您可以在网上到处阅读的各种问题,并有各种答案: 等等 但是,总有“最佳方法”,它应该在堆栈溢出中。 问题答案: 来自其他脚本语言的人们总是认为自己的语言更好,因为他们具有内置功能而不是PHP(我现在正在研究Pythonistas :-)。 实际上,它确实存在,但是很少有人知道。相约: 这是快速且内置的。可以根据传递给它的常量为您提供其他信息,例如规范路径。 请记住,如果您希望能

  • 我也需要扩展WebMvcConfigurationSupport类,修改两个内容: 我喜欢从WebMvcAutoConfiguration类注册的默认值,但是由于类上的条件注释,当我扩展WebMvcConfigurationSupport类时,它会防止自动配置的发生。 提前道谢!