Android [10 / Q / API29]不支持的路径/ storage / emulated / 0 /

时间:2019-12-23 15:45:51

标签: android-studio filepath android-download-manager android-10.0

我有一个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){....})

0 个答案:

没有答案