在打开实际PDF之前打开PDF的选择器

时间:2017-10-27 08:02:48

标签: android pdf filechooser

目前,我正在尝试使用选择器打开我的pdf文件。我目前遇到的问题是文件在选择器可见之前尝试打开。只有当我从打开的文件返回时,我才能看到选择器并选择我喜欢的应用程序。我尝试根据几个关于如何使用选择器的StackOverflow建议来修改我的代码,但即使我尝试过它们也无法工作。

这是我打开pdf的代码:

case "PDF":
                            Intent pdfIntent = new Intent();
                            pdfIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                            pdfIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                            pdfIntent.setAction(android.content.Intent.ACTION_VIEW);
                            Uri contentPDFUri = FileProvider.getUriForFile(context,
                                    "com.ndlp.socialstudy.provider",
                                    my_clicked_file);
                            pdfIntent.setDataAndType(contentPDFUri,"application/pdf");
                            Intent intentpdfChooser = pdfIntent.createChooser(pdfIntent, "Open With");
                            try {
                                context.startActivity(intentpdfChooser);
                            } catch (ActivityNotFoundException e) {
                                Toast.makeText(context, "Please install a PDF app to view your file!", Toast.LENGTH_LONG).show();
                                // Instruct the user to install a PDF reader here, or something
                            }

2 个答案:

答案 0 :(得分:1)

Intent myIntent = new Intent(Intent.ACTION_VIEW);
        myIntent.setData(Uri.fromFile(file));
        Intent j = Intent.createChooser(myIntent, "Choose an application to open with:");
        startActivity(j);

答案 1 :(得分:0)

而不是打电话

Intent intentpdfChooser = pdfIntent.createChooser(pdfIntent, "Open With");

Intent intentpdfChooser = Intent.createChooser(pdfIntent, "Open With");

让Android系统弄清楚哪些应用程序可以处理您的pdfIntent

在我使用的其中一个应用中:

Intent target = new Intent(Intent.ACTION_VIEW);
target.setDataAndType(uri, "application/pdf");
target.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
Intent intent = Intent.createChooser(target, "Open PDF using");
try {
        mContext.startActivity(intent);
} catch (ActivityNotFoundException e) {
    // Instruct the user to install a PDF reader here, or something
        Toast.makeText(mContext, "No Applications found to open pdf", Toast.LENGTH_SHORT).show();
}

它正在为我工​​作。