要从Android应用程序的所有目录中获取所有PDF文件,您需要遍历设备的文件系统,并检查每个文件的扩展名是否为.pdf。以下是实现这一功能的步骤和示例代码:
在Android中,应用程序通常只能访问其私有目录(如/data/data/<package_name>/files/
)或通过存储访问框架(SAF)访问外部存储和网络位置。从Android 10开始,直接访问外部存储的某些部分受到了限制。
以下是一个简单的示例,展示了如何遍历内部和外部存储以查找PDF文件:
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 100;
private List<File> pdfFiles = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_CODE);
} else {
findPdfFiles();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
findPdfFiles();
}
}
private void findPdfFiles() {
// Check internal storage
File internalDir = getFilesDir();
findPdfInDirectory(internalDir);
// Check external storage if available
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File externalDir = Environment.getExternalStorageDirectory();
findPdfInDirectory(externalDir);
}
}
private void findPdfInDirectory(File directory) {
if (directory != null && directory.isDirectory()) {
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
findPdfInDirectory(file); // Recursively search subdirectories
} else if (file.getName().toLowerCase().endsWith(".pdf")) {
pdfFiles.add(file);
}
}
}
}
}
}
通过上述步骤和代码,您可以有效地从Android应用程序的所有目录中获取所有PDF文件。
领取专属 10元无门槛券
手把手带您无忧上云