Is it possible to hide some application in Intent AppChooser?

前端 未结 2 455
后悔当初
后悔当初 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: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 activities = pm.queryIntentActivities(pdfIntent, 0);
    
    List targetPDFIntents = new ArrayList();
    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.

提交回复
热议问题