我无法从内部存储空间,外部存储空间,最近或Google工作表中选择pdf文件。
Intent intent = new Intent("com.sec.android.app.myfiles.PICK_DATA");
intent.putExtra("CONTENT_TYPE", "application/pdf");
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivityForResult(intent, FILE_SELECT_CODE);
答案 0 :(得分:0)
您可以使用Intent.ACTION_OPEN_DOCUMENT
,
每个文档都表示为一个内容://由DocumentsProvider
支持的URI,可以作为包含openFileDescriptor(Uri, String)
的流打开,或者查询DocumentsContract.Document元数据。
所有选定的文档都将返回给调用应用程序,并具有可持久的读写权限授予。如果要在设备重新启动后维护对文档的访问权限,则需要使用takePersistableUriPermission(Uri, int)
显式获取可持久权限。
调用者必须通过setType(String)指明可接受的文档MIME类型。例如,要选择照片,请使用image / *。如果可以接受多个不相交的MIME类型,请在EXTRA_MIME_TYPES
和setType(String)
中将其定义为/.
有关详细信息,请参阅此link
请注意,上述内容仅适用于API级别19 +。
答案 1 :(得分:0)
试试这个,
private static final int PICK_FILE = 101;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("application/pdf");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(Intent.createChooser(intent, "Select a File"), PICK_FILE);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
onActivityResult:
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
case PICK_FILE:
if (resultCode == RESULT_OK) {
// Get the Uri of the selected file
Uri uri = data.getData();
// Get the path
String path = getPath(mContext, uri);
Log.d(TAG, "Path: " + path);
if (path != null && path.contains(".pdf")) {
}
}
break;
}
}
getPath:
public String getPath(Context context, Uri uri) {
if ("content".equalsIgnoreCase(uri.getScheme())) {
String[] projection = {"_data"};
Cursor cursor;
try {
cursor = context.getContentResolver().query(uri, projection, null, null, null);
assert cursor != null;
int column_index = cursor.getColumnIndexOrThrow("_data");
if (cursor.moveToFirst()) {
return cursor.getString(column_index);
}
cursor.close();
} catch (Exception e) {
// Eat it
}
} else if ("file".equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
}
return null;
}