我需要能够在可移动SD卡上读写数据,以便在卸载该应用程序后不会将其删除。大量数据!
我有一个可以处理50,000多个文件,10 GB(主要是图像和视频)的应用程序。最初,这些数据是使用PC上的SD适配器直接加载到SD卡上的,然后通过Android设备上的FTP定期进行更新(少量文件)。 (在不同国家/地区有一小组用户。)
如果我使用getExternalFilesDirs()和Environment.isExternalStorageRemovable(file)将数据放在外部SDCard上,那么这一切都很好。示例路径:- /storage/1234-5678/Android/data.com.me.myapp/files/MyDataDirectory
但是,有时用户需要卸载并重新安装该应用程序。 在这种情况下,所有数据都将被销毁,如果将SDCard连接到PC,则需要数小时才能重建,如果必须通过FTP重建,则需要数天。
我可以将所有文件放在SDCard的顶层目录中并读取它们。 该应用程序运行正常,并且在卸载时不会删除文件。但是,FTP更新失败,并且在任何写入SDCard的权限上都被拒绝了权限。
该应用使用ActivityCompat.requestPermissions(活动,android.Manifest.permission.WRITE_EXTERNAL_STORAGE,101)从用户那里获得许可。
ContextCompat.checkSelfPermission(act,Permission.WRITE_EXTERNAL_STORAGE)完成后返回PackageManager.PERMISSION_GRANTED。
我很高兴将数据写入Public目录的子目录,例如... 文件externalPublicDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES);
但是:-Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)始终返回到内部存储的路径。不可移动的SD卡。我的数据太大,无法接受。
过去,使用SDCard上的顶级目录,所有这些都可以完美地与KitKat配合使用,但是先进的安全控制阻止了简单的解决方案。我现在在运行该应用程序的所有设备上使用牛轧糖。
设备相机似乎将照片放入SDCard上的公共目录中,从而可以完成操作。
我使用Storage Access Framework构建了一个解决方案,但是它非常慢。
有人可以建议一种使用文件系统写入SDCard上公共目录的方法吗?
谢谢。