我有一个Galaxy S10,最近我得到了Android 10的更新,突然我的应用程序中出现了带有文件路径的错误。
以下代码适用于Android 10以外的所有版本
这是我下载内容的方式:
int res = context.checkCallingOrSelfPermission(permission);
if (res == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(con, "Download is starting", Toast.LENGTH_SHORT).show();
DownloadManager downloadmanager = (DownloadManager) con.getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(lin));
titl.replace("#", "");
titl.replace("-", "");
titl = titl.substring(0, Math.min(titl.length(), 20));
request.setTitle(titl);
request.setDescription("Downloading");
request.setNotificationVisibility(1);
request.setVisibleInDownloadsUi(false);
File fileo = Environment.getExternalStorageDirectory();
File Dir = new File(fileo.getAbsolutePath() + "/Test");
if (!Dir.exists()) {
Dir.mkdir();
}
StringBuilder sb = new StringBuilder();
sb.append("file:///");
sb.append(fileo);
sb.append("/Test/");
sb.append(titl);
sb.append(".mp4");
request.setDestinationUri(Uri.parse(sb.toString()));
downloadmanager.enqueue(request);
System.out.println("Downloader");
} else {
Toast.makeText(con, "Please go to Settings and allow permission to download", Toast.LENGTH_LONG).show();
}
我如何阅读下载内容
if (checkPermission() == true) {
File fileo = Environment.getExternalStorageDirectory();
String path = fileo.toString() + "/Test";
System.out.println(path);
File directory = new File(path);
System.out.println(directory.toString());
File[] files = directory.listFiles();
System.out.println(Arrays.toString(files));
Bitmap bitmap;
if(files.length > 0 ) {
for (int i = 0; i < files.length; i++) {
Log.d("Files", "FileName:" + files[i].getName());
Bitmap bMap = ThumbnailUtils.createVideoThumbnail(files[i].getAbsolutePath(), MediaStore.Video.Thumbnails.MINI_KIND);
rowList.add(new String[]{files[i].getAbsolutePath(), BitMapToString(bMap), files[i].getName()});
System.out.println(files[i].getAbsolutePath());
}
}
RelativeLayout relativeLayout = (RelativeLayout) getActivity().findViewById(R.id.relative);
gridview.setAdapter(new CustomAdapter("download", context, rowList, getActivity().getWindowManager(), getActivity().getWindow(), getActivity().getActionBar(), relativeLayout));
context = getActivity();
}else{
Toast.makeText(context, "Please go to Settings to enable Downloads!", Toast.LENGTH_SHORT).show();
}
错误:
java.lang.SecurityException:不支持的路径/storage/emulated/0/Test/test.mp4
java.lang.NullPointerException:尝试获取空数组的长度(if(files.length> 0){....})