簡體   English   中英

如何獲取設備中的所有文件PDF

[英]How to get all files PDF in device

我想在手機中獲取所有文件 PDF。 但是當我使用代碼 new File(Environment.getExternalStorageDirectory().toString()).listFiles() 返回 null 時。我正在使用 targetSDK 31 我的代碼

File dir = new File(Environment.getExternalStorageDirectory().toString());
getfile(dir);
public ArrayList<File> getfile(File dir) {
        File listFile[] = dir.listFiles();
        if(listFile==null){
            Log.d("kdkkdd","day");
        }
       // Log.d("kkdkd",listFile.length+"");
        if (listFile != null && listFile.length > 0) {
            Log.d("ssksks",listFile.length+"");
            for (int i = 0; i < listFile.length; i++) {

                if (listFile[i].isDirectory()) {
                    Log.d("kkdkkd",listFile[i].getName());
                    getfile(listFile[i]);

                } else {

                    boolean booleanpdf = false;
                    if (listFile[i].getName().endsWith(".pdf")) {

                        for (int j = 0; j < fileList.size(); j++) {
                            if (fileList.get(j).getName().equals(listFile[i].getName())) {
                                booleanpdf = true;
                            } else {

                            }
                        }

                        if (booleanpdf) {
                            booleanpdf = false;
                        } else {
                            fileList.add(listFile[i]);

                        }
                    }
                }
            }
        }
        Log.d("kdkdkkd",fileList.size()+"");
        return fileList;
    }

什么解決辦法??? 我如何才能在手機中獲取所有文件 PDF???

你有特定的存儲權限嗎? 對於 targetSDK 31,您必須具有 MANAGE_EXTERNAL_STORAGE 權限才能獲取 PDF 列表。

獲取 PDF 所需的權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

然后在您的 Manifest -> application 標簽中選擇退出 Android 10 設備上的范圍存儲

 android:requestLegacyExternalStorage="true" 

在運行時從用戶那里獲取存儲權限。 然后獲取 PDF

private void walkDir(File dir,String pattern) {
    File[] listFile = dir.listFiles();
    if (listFile != null) {
        for (int i=0;i<listFile.length;i++) {
            if (listFile[i].isDirectory()) {
                walkDir(listFile[i]);
            } else {
                if (listFile[i].getName().endsWith(pattern)) {
                    fileList.add(listFile[i]);
                }
            }
        }
    }
}

簡單調用方法

walkDir(Environment.getExternalStorageDirectory(),".pdf")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM