如何将 URI 转换为文件 Android 10

2023-11-25

如何在 android 10 及以上版本中从 URI 获取文件对象或将 URI 转换为文件对象。

 final File file = new File(Environment.getExternalStorageDirectory(), "read.me");
 Uri uri = Uri.fromFile(file);

在 android 10 中,您无法将直接文件转换为 URI,相反,您可以将文件复制到您的文件目录中,这将帮助您获取文件对象。

File f = getFile(getApplicationContext(), uri);

下面的方法为您提供 URI 的文件对象,并且您的文件目录中也有该文件的副本。

    public static File getFile(Context context, Uri uri) throws IOException {
    File destinationFilename = new File(context.getFilesDir().getPath() + File.separatorChar + queryName(context, uri));
    try (InputStream ins = context.getContentResolver().openInputStream(uri)) {
        createFileFromStream(ins, destinationFilename);
    } catch (Exception ex) {
        Log.e("Save File", ex.getMessage());
        ex.printStackTrace();
    }
    return destinationFilename;
}

public static void createFileFromStream(InputStream ins, File destination) {
    try (OutputStream os = new FileOutputStream(destination)) {
        byte[] buffer = new byte[4096];
        int length;
        while ((length = ins.read(buffer)) > 0) {
            os.write(buffer, 0, length);
        }
        os.flush();
    } catch (Exception ex) {
        Log.e("Save File", ex.getMessage());
        ex.printStackTrace();
    }
}

private static String queryName(Context context, Uri uri) {
    Cursor returnCursor =
            context.getContentResolver().query(uri, null, null, null, null);
    assert returnCursor != null;
    int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
    returnCursor.moveToFirst();
    String name = returnCursor.getString(nameIndex);
    returnCursor.close();
    return name;
}

欲了解更多详细信息,请参阅here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 URI 转换为文件 Android 10 的相关文章

  • Android Wear 应用程序无法连接到 google api 服务

    我正在尝试在 Android Wear 和 Android 手机之间建立连接 googleApiClient 连接失败 并返回 SERVICE VERSION UPDATE REQUIRED 状态代码 我究竟做错了什么 这是我的活动代码 O
  • Eclipse 中使用 Phonegap Android 开发的 HTML 表单输入

    我有一个奇怪的问题 我最近使用 Phonegap 和 Xcode 开发了一个 ios 应用程序 一切顺利 他们在应用程序商店中 一切正常 其中一个元素是用 HTML 编写的简单电子邮件表单 它看起来像这样
  • Android:Realm + Retrofit 2 + Gson

    我使用时遇到问题Retrofit Gson and Realm 我知道这三个库的组合存在问题 一些答案建议设置一个ExclusionStrategy for Gson可以解决这个问题 我也尝试过 但是没有成功 我的代码如下所示 public
  • 如何在Android Studio中查看所有TODO任务?

    如何在 Android Studio 中打开一个视图 其中包含我使用创建的所有任务 TODO评论会显示吗 您可以在左下角菜单栏找到此 视图 称为待办事项 or 安卓工作室 转到 View gt Tool Windows gt TODO 显示
  • Service 构造函数中出现 NullPointerException

    在我的 Android 项目中 我有一个Service public class MyService extends Service I defined a explicite contructor public MyService Nul
  • Kotlin 委托属性导致 Android Studio 中预览渲染错误

    我创建了一个自定义属性 专门用于保存需要为我的项目之一调用 invalidate 的视图属性 class InvalidatingProperty
  • FrameLayout 中的重叠行为不正确

    根据docs http developer android com reference android widget FrameLayout html FrameLayout 中的子视图彼此重叠绘制 最近添加的视图位于顶部 但我注意到 这在
  • 请求的操作:声明您的广告 ID 权限

    今天我收到这封电子邮件 去年 7 月 我们宣布了广告政策变更 以帮助加强 安全和隐私 我们对使用的标识符添加了新的限制 针对儿童的应用程序 当用户选择删除他们的 广告 ID 以选择退出个性化广告 如果满足以下条件 开发人员将收到一串零而不是
  • 用于带有 imageview 的可点击布局的 android 选择器

    伙计们 如果我有这样的布局
  • Web 服务器上的身份验证和授权 ?

    我正在构建一个 Android 应用程序 它与 apache tomcat 上的 Web 服务器进行通信 Web 服务器采用 JAVA EE 构建 目前 为了进行身份验证和授权 我使用用户名 密码 为了管理会话 我使用令牌 因此 当用户登录
  • jquery mobile + PhoneGap 构建中的 Youtube iframe

    我正在使用 iframe 将 YouTube 视频嵌入到使用 jQuery mobile 和 PhoneGap 构建开发的 Android iOS 应用程序中 在我的浏览器上测试效果很好 在我的设备 android 上 我看到视频缩略图 但
  • 访问 Android 崩溃报告

    当我使用 Sports Tracker 时 它崩溃了 当我按下 报告 按钮来报告崩溃时 我会看到一个简单的输入字段 要求对崩溃做出评论 但是 按 预览 将使我了解正在与崩溃日志一起发送的数据 数据量实际上是巨大的 包括日期 时间 设备名称
  • 限制用户在 Mapview 上可以到达的区域

    我正在使用地图视图的定制版本 OSMDroid 版本 我在其中使用自定义图块 我只希望用户能够查看我拥有自定义图块的区域 有没有办法设置边界纬度 以便当他们平移地图时不会超出这些边界 Update 我知道这是一个老问题 但 osmdroid
  • 如何安装“Android 支持库”以将 Gluon Mobile 应用程序部署到 Android?

    我想使用 Gluon Mobile 框架开发一个 Android 应用程序 我在 Netbeans IDE 中安装了 Gluon 插件 创建了一个示例项目并成功构建了它 现在我想将该应用程序部署到 Android 设备 我指的是在线文档 1
  • Android 中 LinkedIn 的 Oauth 2.0 授权

    即使 linkedIn 没有这样的 Android 特定 sdk 例如适用于 android 的 facebook 和 twitter sdk 使用 Oauth 1 0 设置 linkedIn 授权仍然很容易使用 抄写员java https
  • 发送电子邮件到多个地址 Android

    我想选择多个电子邮件地址 然后向所有这些地址发送电子邮件 我的代码如下 emailIntent putExtra android content Intent EXTRA EMAIL new String listofemailaddres
  • Android 前台服务通知未显示

    我正在尝试启动前台服务 我收到服务确实启动的通知 但通知总是被抑制 我仔细检查了应用程序是否允许在我的设备上的应用程序信息中显示通知 这是我的代码 private void showNotification Intent notificat
  • 融合位置有时会停止

    我一直在开发一个跟踪用户位置的应用程序 为此 我使用了谷歌播放服务位置模块 又名融合位置 总而言之 一切正常 但有时 完全随机 我根本不再收到来自谷歌位置服务的位置更新 我的意思是 我的应用程序工作正常 但没有位置更新 不仅如此 如果我启动
  • 是否可以在 AlertDialog 中自定义正向和负向按钮?

    是否可以在 AlertDialog 中自定义正向和负向按钮 我需要用自定义替换默认的正面和负面外观 setPositiveButton android R string ok new DialogInterface OnClickListe
  • Android 上方向改变时如何避免重新启动 Activity

    我正在创建一个 Android 应用程序 在其中在画布上绘制视图 当设备的方向改变时 活动将重新启动 我不想这样 如何避免在方向改变时重新启动 Activity 有多种方法可以做到这一点 但正如给定的here https stackover

随机推荐

  • 如何将多模块maven项目组装成一个WAR?

    类似问题here 我想从 3 个不同的 Maven 模块中部署一个生成的 WAR 战争模块绝对不冲突 第一个包含 Java 类和一些 WEB INF artifacts 第二个只是 API 接口 必须已经存在于容器中或者是由此产生的战争的一
  • 大约一天后,Service Broker 消息开始挂起

    我有一个使用 Service Broker 的应用程序是 SQL 2008 大约每天一次 数据库的性能开始受到明显的影响 我确定这是由 Service Broker 造成的 如果我使用以下命令硬重置所有代理连接 ALTER DATABASE
  • 获取可排序 jQuery 中拖动列表项的 ID

    我有这个html ul li First li li Second li li Third li ul 和这个 sortable jQuery function listofpages sortable 如何获取被拖动元素的id 在 的里面
  • 从 IEnumerable 转换为列表 [重复]

    这个问题在这里已经有答案了 我想转换自IEnumerable
  • 如何设置 eclipse.ini -vm 选项?

    我安装了Maven插件Eclipse 然后我收到如下错误 请确保 eclipse ini 中的 vm 选项指向 JDK 我该如何使用 vm在 eclipse ini 中选择指向我的 JDK 我的解决方案是 vm D work Java jd
  • 使用 PHP 将 jpg 图像转换为 gif、png 和 bmp 格式

    如何使用 PHP 将单个 jpg 图像转换为 3 种不同的图像格式 gif png 和 bmp 您首先从文件中创建一个图像对象imagecreatefromjpeg 然后 您将该对象转储为不同的格式 使用图像gif 例如 imageObje
  • 使用 ng-repeat 进行 Angularjs 表排序

    我有一个 HTML 表格 想要对我的记录进行排序 scope records在 ctrl 中 通过单击表标题 scope headers在 ctrl 中 任何人都可以解释为什么它有效 th a headers 0 a th th a hea
  • git 预提交钩子代码格式化与部分提交?

    有没有办法有一个预提交钩子来自动格式化代码 对于 示例与astyle 但是确实not销毁部分提交 工作流程 edit a file txt git add p file txt add one chunk but not another g
  • 如何在 Swift 中获得 Bool 的相反值?

    我的具体情况是我正在尝试切换导航栏的隐藏和显示 let navHidden self navigationController navigationBarHidden self navigationController setNavigat
  • iOS - 如何发出 SOAP 请求并接收关注响应

    我知道网络上有很多关于 如何在 iOS 中使用 SOAP 的内容 但我仍然未能遵循 SOAP 请求和响应 非常感谢帮助 我用的是简单的NSURLConnection用于请求和响应 SOAP 请求 POST asmx HTTP 1 1 Hos
  • 服务器端语音识别[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有人知道已经托管的任何好的服务器端语音识别引擎吗 IE 我希望能够调用一个简单的 Web API 来发布一些声音数据并获取文本 不一定是免费的 但希
  • 获取当前域名

    我的网站在服务器上http www myserver uk com 在此服务器上我有两个域 one com and two com 我想使用 PHP 获取当前域名 但是如果我使用 SERVER HTTP HOST 然后它向我展示 myser
  • 如何在 Rails 连接表迁移中正确索引字段?

    Rails 4 引入了生成连接表迁移的功能 bin rails generate migration CreateTeamsUsersJoinTable team user 这会产生以下文件 class CreateTeamsUsersJo
  • 使用 jQuery,如何仅查找可见元素并保留隐藏元素?

    所以我从第 1 4 项开始 div class someDiv bold italic style display none Lorem div div class someDiv regular italic style display
  • 如何对使用 perlcc 编译的 Perl 程序进行逆向工程?

    我继承了一个在 Unix 上有 编译 perl 脚本的环境 是否可以对其进行反编译 反向工程 无论术语是什么 并从编译后的目标代码中获取源代码 可能不可能 但我想我会问而不是假设 谢谢 凯文 省略已经介绍过的字节码后端 tchrist 只讨
  • CakePHP 2个单独的登录表

    我有一个 Cake 网站 它需要有两个单独的登录名 每个登录名都有自己的登录表单并看到不同的页面 最好有两个不同的表 因为两类人之间没有相似之处 每个登录表单仅由某些人使用 他们永远不会登录另一个表单 反之亦然 还有 两个登录表之间有关系
  • bean实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:

    我的控制器中的构造函数有一些问题 我尝试在构造函数中调用一项服务 该服务在 AbstractController 中自动装配 但我遇到了空指针异常 一个组件 Component RestController RequestMapping v
  • Java/XSLT:找不到匹配的 1 参数函数

    我收到以下错误 javax servlet ServletException Cannot find a matching 1 argument function named http exslt org dynamic evaluate
  • Spring Boot 数据源配置

    我正在尝试使用application properties文件来配置 Spring Boot 必须使用的数据源 我已将以下属性放入其中 spring datasource driverClassName org postgresql Dri
  • 如何将 URI 转换为文件 Android 10

    如何在 android 10 及以上版本中从 URI 获取文件对象或将 URI 转换为文件对象 final File file new File Environment getExternalStorageDirectory read me