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

Android 在实际PDF打开之前打开PDF选择器,android,pdf,filechooser,Android,Pdf,Filechooser,目前,我正试图用选择器打开我的pdf文件。我目前遇到的问题是,文件试图在选择器可见之前打开。只有当我从打开的文件返回时,我才能看到选择器并选择我最喜欢的应用程序。我试图根据几个关于如何使用选择器的StackOverflow建议修改我的代码,但即使我尝试了它们,它们也不会起作用 以下是我打开pdf的代码: case "PDF": Intent pdfIntent = new Intent();

目前,我正试图用选择器打开我的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
                            }
而不是打电话

Intent intentpdfChooser = pdfIntent.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();
}

这对我很有用。

我认为你的应用程序默认行为是直接打开它。是的,这可能是一个选项。我会调查它。这不是问题。我下载了一个应用程序来管理我的默认数据,并清理默认应用程序的pdf格式。现在问题仍然存在:/context.startactivitytentpdfchooser;你为什么要在这里给出上下文,这是在你称之为上下文的活动之外的某个方法中吗?很好的建议!对我来说不起作用,但它仍试图打开,只有当我退出时,我才会被引导到文件选择器:/
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);
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);