admin 管理员组文章数量: 1184232
我在用断点续传根据URL下载一张图片到手机外部存储之后,在手机上的文件管理APP中可以看到文件已经成功写入,但是连接电脑在电脑上看不到该文件.
在重命名文件之后或者重启手机之后能在电脑上看到该文件
经过网上查找资料终于发现原因:
Environment.getExternalStorageDirectory().getPath()获取外部存储
由于现在很多手机因为容量足够,不再外插SD卡,获取的外部存储路径就是在手机根目录下,而手机对于外部存储的文件有一个扫描机制,直接写入文件到手机外部存储由于系统未重新扫描外部存储,所以在电脑上显示不了文件,而重命名文件和重启手机的方式可以触发扫描机制,所以这两个操作之后就可以在电脑上看到该文件
解决方案
在文件写入完毕之后手动调用手机系统的扫描机制:
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);
还有一种更简便的调用代码:
MediaScannerConnection.scanFile(context, new String[] { file.getAbsolutePath() }, null, null);
还有一种无法写入文件的情况是因为没有申请权限
Android API23也就是6.0版本之后写入外部存储需要申请权限,而且该权限属于危险权限,需要动态申请
//申请写入权限
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
}
@Override
public void onRequestPermissionsResult(int requestCode,String [] permissions,int[] grantResults){
switch (requestCode){
case 1:
if (grantResults.length>0&&grantResults[0]!=PackageManager.PERMISSION_GRANTED){
Toast.makeText(this,"拒绝权限将无法正常使用",Toast.LENGTH_SHORT).show();
finish();
}
break;
default:
}
}
最后感谢这三篇博客让我知道了解决方案:
https://wwwblogs/andy-songwei/p/7123209.html
https://blog.csdn/wwp9527/article/details/82799349
https://blog.csdn/qq_29654885/article/details/80436847
版权声明:本文标题:Android写入文件电脑上看不到的原因 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1754718676a3033074.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论