要从下载文件夹中选择PDF文件而不打开活动,可以使用以下解决方法:
public class FileChooserHelper {
private static final String[] ACCEPT_MIME_TYPES = {"application/pdf"};
public static Intent createFileChooserIntent() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, ACCEPT_MIME_TYPES);
intent.addCategory(Intent.CATEGORY_OPENABLE);
return intent;
}
public static boolean isPdfFile(Uri uri, ContentResolver contentResolver) {
String mimeType = contentResolver.getType(uri);
return mimeType != null && mimeType.equals("application/pdf");
}
}
public class MainActivity extends AppCompatActivity {
private static final int FILE_CHOOSER_REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button chooseFileButton = findViewById(R.id.choose_file_button);
chooseFileButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent fileChooserIntent = FileChooserHelper.createFileChooserIntent();
startActivityForResult(fileChooserIntent, FILE_CHOOSER_REQUEST_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == FILE_CHOOSER_REQUEST_CODE && resultCode == RESULT_OK) {
Uri selectedFileUri = data.getData();
ContentResolver contentResolver = getContentResolver();
if (selectedFileUri != null && FileChooserHelper.isPdfFile(selectedFileUri, contentResolver)) {
// 处理选择的PDF文件
// 可以使用selectedFileUri来访问文件内容
} else {
// 选择的文件不是PDF文件
Toast.makeText(this, "请选择PDF文件", Toast.LENGTH_SHORT).show();
}
}
}
}
以上代码示例中,点击按钮后会打开文件选择器,选择PDF文件后会在onActivityResult方法中处理选择的PDF文件。如果选择的文件不是PDF文件,则会显示一个Toast提示选择PDF文件。
请注意,这些代码是用于Android 11及更高版本,使用Java编程语言。在使用这些代码时,请确保在AndroidManifest.xml文件中添加了适当的权限,并且根据需要修改布局文件和其他代码部分。