配置AndroidManifest 文件

在Assets 目录下查找AndroidManifest 文件,添加权限声明,在application 节点中添加requestLegacyExternalStorage 属性。

<!-- 权限声明 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:requestLegacyExternalStorage="true">...</application>

权限检查及申请

Android 6 及以上版本需要动态申请读写权限。

if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead))
{Permission.RequestUserPermission(Permission.ExternalStorageRead);
}
yield return new WaitUntil(() => Permission.HasUserAuthorizedPermission(Permission.ExternalStorageRead));
if (!Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite))
{Permission.RequestUserPermission(Permission.ExternalStorageWrite);
}
yield return new WaitUntil(() => Permission.HasUserAuthorizedPermission(Permission.ExternalStorageWrite));

*开启权限后需重启软件。

文件目录路径

AndroidJavaClass androidJavaClass = new AndroidJavaClass("android.os.Environment");
AndroidJavaObject androidJavaObject = androidJavaClass.CallStatic<AndroidJavaObject>("getExternalStorageDirectory");//根目录
/* Downloads 目录
* AndroidJavaObject androidJavaObject = androidJavaClass.CallStatic<AndroidJavaObject>("getExternalStoragePublicDirectory", androidJavaClass.GetStatic<string>("DIRECTORY_DOWNLOADS"));
*/
path = androidJavaObject.Call<string>("getAbsolutePath");
filePath = Path.Combine(path, fileName);

写入

try
{File.WriteAllText(filePath, contents);
}
catch (Exception e)
{}//[Serializable]
//public class SaveData
//{
//    public string createTime;
//    public string contents;
//}//try
//{
//    BinaryFormatter bf = new BinaryFormatter();
//    FileStream file = File.Create(filePath);
//    SaveData data = new SaveData()
//    {
//        createTime = DateTime.Now.ToString(),
//        contents = "The Life Of A Showgirl available Oct. 3"
//    };
//    bf.Serialize(file, data);
//    file.Close();
//}
//catch (Exception e)
//{//}

读取

if (File.Exists(filePath))
{contents = File.ReadAllText(filePath);//BinaryFormatter bf = new BinaryFormatter();//FileStream file = File.Open(filePath, FileMode.Open);//SaveData data = (SaveData)bf.Deserialize(file);//file.Close();//Debug.Log(data.contents);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95437.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95437.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/95437.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pydantic模型验证测试:你的API数据真的安全吗?

url: /posts/03b2afdf35f55dbaef631710ab6da82c/ title: Pydantic模型验证测试:你的API数据真的安全吗? date: 2025-09-03T23:46:18+08:00 lastmod: 2025-09-03T23:46:18+08:00 author: cmdragon summary: Pydantic在FastAPI中用于数据验证和序列化,通过Python类型注解自动…

【Proteus仿真】AT89C51单片机中断系列仿真——INT0中断控制LED小灯/INT0和INT1中断控制数码管

目录 0案例视频效果展示 0.1例子1&#xff1a;INT0控制LED闪烁 0.2例子2&#xff1a;INT0中断控制数码管计数 0.3例子3&#xff1a;INT0中断实现秒表功能 0.4例子4&#xff1a;INT0INT1中断控制数码管计数 1基础知识补充——中断系统 1.1 中断源一览 1.2 控制寄存器 1…

MTK Linux DRM分析(三十三)- MTK mtk_mipi_tx.c

一、MIPI PHY驱动简介 1. MIPI 协议分层 应用层:显示(DSI)、摄像头(CSI)。 协议层:定义像素/图像帧如何封装成数据包。 物理层(PHY):具体电气信号传输方式 —— 这里就是 D-PHY 或 C-PHY。 2. D-PHY(Differential PHY) 传输方式:差分信号(类似 LVDS/USB/PCIe …

G2D 图形加速器

文章目录G2D 图形加速器1. 功能简介1.1 矩形填充1.2 旋转和镜像 (rotate and mirror)1.3 透明度混合1.4 colorkey1.5 缩放 (Stretchblt)2. G2D 框架3. 全志 G2D 使用示例3.1 使用G2D实现图像旋转缩放3.2 实时预览中加入旋转缩放功能G2D 图形加速器 G2D模块主要实现图像旋转、数…

【FPGA】单总线——DS18B20

目录 项目&#xff1a;项目&#xff08;含quartus工程、仿真文件&#xff09; 1. 单总线通信时序详解 1.1 初始化&#xff08;复位脉冲 存在脉冲&#xff09; 1.2 写时隙&#xff08;写“0”和写“1”&#xff09; 1.3 读时隙 2. DS18B20 暂存器与温度数据格式 2.1 暂存…

JUC的安全并发包机制

目录 1. Lock机制&#xff1a;明锁控制 2. 栅栏机制(CyclicBarrier) 3. 闭锁机制(CountDownLatch) 4. 信号量机制(Semaphore) 5. 无锁机制 1. Lock机制&#xff1a;明锁控制 Lock接口提供了比synchronized更灵活的锁机制&#xff0c;属于明锁&#xff08;需要手动获取和释…

开源企业级快速开发平台(JeecgBoot)

JeecgBoot 是一款基于 Spring Boot Vue 技术栈的开源企业级快速开发平台&#xff0c;旨在通过「低代码代码生成」模式降低企业级应用的开发成本&#xff0c;提升开发效率。其核心定位是“开箱即用的中后台解决方案”&#xff0c;覆盖权限管理、表单报表、工作流、代码生成等核…

探索 PostgreSQL 和 MySQL 之间的主要差异和相似之处,找到满足您项目需求的最佳数据库解决方案。

探索 PostgreSQL 和 MySQL 之间的主要差异和相似之处&#xff0c;找到满足您项目需求的最佳数据库解决方案。 探索 PostgreSQL 和 MySQL 之间的主要差异和相似之处&#xff0c;找到满足您项目需求的最佳数据库解决方案。 关系数据库已经存在了很长时间。事实上&#xff0c;关系…

如何画时序图、流程图、状态流转图

如何画时序图、流程图、状态流转图流程图符号约定时序图元素交互框最佳实践状态流转图在研发或者写技术方案的时候&#xff0c;我们经常会画各种图。图比文字更加容易理解一些&#xff0c;那么如何画出优秀好看的图呢下面简单介绍一些画图时需要注意的点 流程图 流程图是流程…

CSDN 与 掘金 高效学习指南

CSDN 和掘金&#xff08;juejin.cn&#xff09;是国内最活跃的技术社区&#xff0c;但信息量巨大、质量参差不齐。高效运用的关键是&#xff1a;从“被动浏览”转向“主动获取”&#xff0c;避免陷入“收藏一堆文章却学不会”的陷阱。 以下是为你量身定制的CSDN 与 掘金 高效学…

容器tomcat镜像制作

pull-tomcat镜像 docker pull tomcat启动 –security-opt 禁用默认的安全策略&#xff0c;放宽限制 docker run -d --name mysql-tomcat -p 8080:8080 --security-opt seccompunconfined tomcat:latest进入容器直接访问404&#xff0c;网页相关的webapps下面为空&#xff0c;将…

AC安全认证方式全解析

AC的几种安全认证方法认证方式 安全性 便捷性 典型应用场景 所需配置Portal认证 ​​中 高 访客网络、商场、 Portal服务 酒…

《垒球江西百科》男子垒球世界纪录·垒球9号位

男子垒球世界纪录终极盘点⚾ | 冷知识科普&#xff01;1. 最远本垒打距离 | Longest Home Run Distance纪录保持者&#xff1a; Jeff Hall (美国)距离&#xff1a; 643英尺 (约196米)赛事&#xff1a; 2012年 USSSA 慢投垒球锦标赛✨ 科普&#xff1a; 慢投垒球中&#xff0c;球…

设计模式六大原则2-里氏替换原则

肯定有不少人跟我刚看到这项原则的时候一样&#xff0c;对这个原则的名字充满疑惑。其实原因就是这项原则最早是在1988年&#xff0c;由麻省理工学院的一位姓里的女士&#xff08;Barbara Liskov&#xff09;提出来的。定义1&#xff1a;如果对每一个类型为 T1的对象 o1&#x…

Spring Security 深度学习(五): 过滤器链与自定义过滤器

目录1. 引言&#xff1a;揭开Spring Security的内部奥秘2. Spring Security 过滤器链核心机制2.1 DelegatingFilterProxy&#xff1a;整合Spring与Servlet容器2.2 FilterChainProxy&#xff1a;管理安全过滤器链的“总管”2.3 Security Filters&#xff1a;核心安全功能的承载者…

微软GraphRAG 端到端使用及自用工具类

文章目录一. 环境准备1.安装 Python 环境2.安装依赖3.配置 LLM API Key二. 初始化项目三. 文档上传 & 索引构建四. 问答&#xff08;CLI 方式&#xff09;示例&#xff1a;五. 代码中调用 GraphRAG工具概览核心工具详解1. simple_graphrag_integration.py - 智能问答核心2.…

sqlserver2008导入excel表数据遇到的问题

1.如果表格为.xlsx格式时可能会提示“没有为此链接管理提供列”&#xff0c;无法点击下一步的话&#xff0c;建议可以使用.csv格式 .csv格式可能也会存在此提示&#xff0c;但是可以不用管 2.导入.csv数据时&#xff0c;字段为int时&#xff0c;填null导入不进去的话可以给个0作…

Unity游戏打包——打包流程

本文由 NRatel 历史笔记整理而来&#xff0c;如有错误欢迎指正。一、基本流程二、组合步骤把上述每步做成独立的输入输出逻辑 y fuc(x)然后&#xff0c;控制/组合其过程&#xff0c;可灵活产生不同的流程&#xff1a;1、单渠道出测试包2、单渠道出正式包3、单渠道包热更三、构…

卷积神经网络(二):手写数字识别项目(一)

文章目录手写数字识别项目一、准备数据集二、定义模型三、模型训练3.1 导入依赖库3.2 设备设置&#xff08;CPU/GPU 自动选择&#xff09;3.3 超参数定义3.4数据集准备1.获取数据集2.划分训练集与验证集3.创建 DataLoader&#xff08;按批次加载数据&#xff09;3.5模型初始化与…

批量给文件夹添加文件v2【件批量复制工具】

代码功能介绍 这个代码的功能就是一个&#xff0c;给某个文件夹里面添加某个文件&#xff08;含父级文件夹下的每一个子文件夹&#xff09; 举个例子&#xff0c;父级文件夹是&#xff1a;“D:\Desktop\1&#xff0c;要添加的文件路径是&#xff1a;D:\1.txt” 则最后会把文件…