如何在Android棉花糖中获取pdf的文件路径

时间:2019-02-06 07:38:40

标签: java android

我试图从中获取路径

 Intent intent = new Intent();             
            intent.setType("application/pdf");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(
                    Intent.createChooser(intent, "Complete action using"), 2);

但是我没有从Marshamallow获得路径,我可以从棒棒糖获得路径。

如何从内部存储获取文件路径?

2 个答案:

答案 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