Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to hide some application in Intent AppChooser?

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.

Now I can create AppChooser dialog but I don't know how to hide some application.

Thank you very much!

like image 458
MaliEbbae Avatar asked Oct 22 '13 07:10

MaliEbbae


1 Answers

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.

like image 181
creaity Avatar answered Sep 22 '22 17:09

creaity