【发布时间】:2017-11-28 05:10:19
【问题描述】:
我们想从图库中使用意图选择一个 pdf 文件,那么如何获得 pdf 文件的真实路径。我们想从图库中选择一个 PDF 文件并将该文件上传到服务器上。
【问题讨论】:
标签: android filechooser
我们想从图库中使用意图选择一个 pdf 文件,那么如何获得 pdf 文件的真实路径。我们想从图库中选择一个 PDF 文件并将该文件上传到服务器上。
【问题讨论】:
标签: android filechooser
public String getPathFromURI(Context context, Uri contentUri) {
if ( contentUri.toString().indexOf("file:///") > -1 ){
return contentUri.getPath();
}
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}finally {
if (cursor != null) {
cursor.close();
}
}
}
【讨论】:
您好,这里是从外部存储中选择 pdf 文件并获取文件路径的示例代码,您可以使用该路径访问文件数据并在服务器上上传数据。
这里 PICK_IMAGE 是您想要作为请求代码的任何数字。
Intent intent = new Intent();
intent.setType("application/pdf");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select File"),PICK_IMAGE);
public void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE) {
try {
Uri uri1 = data.getData();
String path = String.valueOf(uri1);
String path_lastPart = path.substring(path.indexOf("/storage"));
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// Do the file write
path_lastPart = path_lastPart.replace("%20", " ");
File yourFile = new File(path_lastPart);
} else {
// Request permission from the user
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
}
} catch (Exception e2) {
Log.e("macro", "" + e2);
}
}
}
【讨论】: