如何解决如何向运行时创建的文件而不是从互联网发出下载请求?
我正在从运行时从api接收的一些json数据中创建一个.csv文件,并将此文件存储在本地的android设备中。但是我想对同一文件进行下载请求。这样就可以让人感觉自己只是从互联网上下载了文件。 (我删除了原来的一个。)
我想要的是-看起来下载通常已正常进行,而实际上是在运行时中创建文件,而不是通过某些url下载文件。另外,必须删除原始文件-这样同一文件就不会在两个地方存在。原始副本应存储在默认的下载文件夹中。
我曾尝试使用Download Manager进行相同操作,并且还授予了所有必要的权限,但是它仍然会提供java.lang.SecurityException: Unsupported path /storage/emulated/0/myFolder
例外。
以下是我的代码-
JSONObject obj = new JSONObject();
JSONArray arr = new JSONArray();
try {
for (int i = 0; i < apiData.size(); i++) {
apiMainClass p = apiData.get(i);
obj.put("job_title",p.getJobTitle());
obj.put("name",p..getUserFullname());
obj.put("email",p.getEmail());
obj.put("phone",p.getPhone());
obj.put("applied_time",p.getCreatedAt());
arr.put(obj);
obj = new JSONObject();
}
Log.e("testing -- ",arr.toString()); //gives right json array as needed
String csv = CDL.toString(arr); // used org.json.CDL to convert json array to csv string
String outputPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myFolder";
File dir = new File(outputPath);
dir.mkdirs();
File file = new File(outputPath,"data.csv");
FileOutputStream fos = new FileOutputStream(file);
fos.write(csv.getBytes()); // data.csv files get successfully created
fos.close();
Uri uri = Uri.parse(file.toString());
DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
manager.addCompletedDownload("TestTitle","TestBody",true,"text/csv",outputPath,file.length(),true);
}
catch (Exception e){
e.printstacktrace();
}
注意:apiData是从改型接收的数据 我还没有使用DownloadManager.Request和manager.enqueue(request)是bcoz,它给出了关于uri的例外(uri必须直接指向HTTPS,HTTP等) 我是android开发的新手,请帮助并提前感谢所有人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。