我试图从中获取路径
Intent intent = new Intent();
intent.setType("application/pdf");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
Intent.createChooser(intent, "Complete action using"), 2);
但是我没有从Marshamallow
获得路径,我可以从棒棒糖获得路径。
如何从内部存储获取文件路径?
答案 0 :(得分:0)
我认为您必须为此使用文件提供程序。 请参考此。 https://developer.android.com/reference/android/support/v4/content/FileProvider
答案 1 :(得分:0)
使用startActivityForResult
开始活动时,调用活动将在onActivityResult
中获得结果(如果有)。您应该在通话活动中覆盖该方法...
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
}
从startActivityForResult
开始的活动返回结果后,将立即调用此will方法。您可以使用requestCode
参数来匹配(或过滤掉)期望的结果。对于您的情况,应检查requestCode
等于2,这是您在startActivityForResult
中提供的值。
如果requestCode
等于2,则说明您需要处理PDF文件。意图参数“可以”具有该PDF文件的路径...
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == 2 && data != null){
//This is the uri to the file (which could be null)
Uri uri = data.getData();
if(uri != null){
Log.i("LOG_TAG", String.format("uri path = %s", uri));
}
}
}
现在,要浏览和选择文件,您将通过以下方式(Android Kitkat及更高版本...我认为)...
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("application/pdf");
startActivityForResult(intent, SELECT_FILE_REQUEST_CODE);
然后您将收到如上所述的所选PDF uri