Is it possible to hide some application in Intent AppChooser?

前端 未结 2 453
后悔当初
后悔当初 2020-12-20 23:58

What I want is to hide WebBrowser when opening PDF file in my application. I would like to show only PDF reader application, if not have then display alert message.

相关标签:
2条回答
  • 2020-12-21 00:38

    I think you have to try to open PDF Reader (like Abode one) using explicit intent, catching the exception then display your alert message.

    0 讨论(0)
  • 2020-12-21 00:40

    You have to query for available Apps before starting the chooser. And you need to know something about the app you want to exclude. FOr example the packagename

    Intent pdfIntent = ...;
    PackageManager pm = getPackageManager();
    List<ResolveInfo> activities = pm.queryIntentActivities(pdfIntent, 0);
    
    List<Intent> targetPDFIntents = new ArrayList<Intent>();
    for (ResolveInfo currentInfo : activities) {
        String packageName = currentInfo.activityInfo.packageName;
    if (!"pageToExclude".equals(packageName)) {
            Intent targetPdfIntent = new Intent(android.content.Intent.ACTION_VIEW, exportData);
            targetPdfIntent.setPackage(packageName);
            targetPDFIntents.add(targetPdfIntent);
        }
    }
    
    Intent chooserIntent = Intent.createChooser(targetPDFIntents.remove(0), "title");               
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetPDFIntents.toArray(new Parcelable[] {}));
    startActivity(chooserIntent);
    

    With that you start a chooser with a list of explicit activity of a packages. And all of them can handle the IntentType pdfIntent which is created in the first line.

    0 讨论(0)
提交回复
热议问题