前言
- 问题
- 背景
- 解决方案
问题
- 项目中生excel 、txt文件,很正常的需求,当你实现此功能后感觉不过如此嘛,很简单。测试组很给抛出一个问题,生成的文件手机上可以看到,在电脑上看不到,当时估计会蒙蔽,怎么可能,这个简单的东东怎么会出错!!!!
- 在电脑上压根找不到存放文件的文件夹,此现象更是无语。。。。
背景
这个问题主要涉及到windows读取android设备盘符及文件传输端口通信的问题。因为系统架构(arm & x86)的差异性,导致无法做到类似于长连接的那种通信机制。总结一句:windows目前还不能实现实时地获取并展示Android系统分区下的文件。
看到这里依然不太明白,可不可以在通俗一点,答案是当然可以。
目前大家插上电脑,通常的连接方式都是MTP。一般在插上电脑的时候,手机的状态栏可以供用户选择是以MTP(媒体设备)方式连接还是以PTP(相机)。通常在进行文件操作的时候,大家会使用MTP,而MTP并非传统的磁盘模式,因为手机存储的速度没有那么快,所以google对MTP建立了一个缓存。每次连接电脑其实都是读取的缓存,如果手机上的文件有更新却没有刷新缓存,就会出问题。
解决方案
1.最残暴的方式
重启手机,固然有效,但产品和测试组肯定不同意
2.代码层实现(主动刷新缓存)
Google的一些开发者给出的方案是:在写入文件后,添加代码:
MediaScannerConnection.scanFile(this, new String[] { file.getAbsolutePath() }, null, null);
3.对于文件夹都找不到的问题
Uri uri = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri);
activity.sendBroadcast(intent);
网友评论