Is it possible to hide some application in Intent

2019-02-17 13:27发布

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!

2条回答
forever°为你锁心
2楼-- · 2019-02-17 13:43

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.

查看更多
ら.Afraid
3楼-- · 2019-02-17 13:44

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

查看更多
登录 后发表回答