android: 在sdcard上创建的文件在 windows电脑上不显示的问题
解决方案:
1. 重启手机;
2. 在写入文件完成的code后面添加:
MediaScannerConnection.scanFile(this, new String[] { file.getAbsolutePath() }, null, null);
3. 每次文件写入完毕后调用下面的方法:
public static void notifySystemToScan(Context context, String filePath) { Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); File file = new File(filePath); Uri uri = Uri.fromFile(file); intent.setData(uri); context.sendBroadcast(intent); }
Why?
这个问题主要涉及到windows读取android设备盘符及文件传输端口通信的问题。因为系统架构(arm & x86)的差异性,导致无法做到类似于长连接的那种通信机制。总结一句:windows目前还不能实现实时地获取并展示Android系统分区下的文件。
看到这里依然不太明白,可不可以在通俗一点,答案是当然可以。
目前大家插上电脑,通常的连接方式都是MTP。一般在插上电脑的时候,手机的状态栏可以供用户选择是以MTP(媒体设备)方式连接还是以PTP(相机)。通常在进行文件操作的时候,大家会使用MTP,而MTP并非传统的磁盘模式,因为手机存储的速度没有那么快,所以google对MTP建立了一个缓存。每次连接电脑其实都是读取的缓存,如果手机上的文件有更新却没有刷新缓存,就会出问题。
参考链接:
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库