android createChooser 过滤多余app

在Android中,当你尝试发送带有附件的邮件并希望仅显示相关邮件客户端时,可能会出现包含不相关应用(如蓝牙、Skype等)的选择器。本文将提供解决方案,展示如何过滤这些多余的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比如说,想发送带有附件的邮件,然后打开邮件的客户端,结果弹出一大群的不相关的app,比如蓝牙啊,Skype啊。


直接上代码


Intent iEmail = new Intent(android.content.Intent.ACTION_SEND);
            iEmail.setType("message/rfc822");

            try {

                List<ResolveInfo> resInfo = getActivity().getPackageManager().queryIntentActivities(iEmail, 0);
                if (!resInfo.isEmpty()) {
                    List<Intent> targetedShareIntents = new ArrayList<Intent>();
                    for (ResolveInfo info : resInfo) {
                        Intent targeted = getEmailIntent();//getEmailIntent()这里是自己需求intent
                        ActivityInfo activityInfo = info.activityInfo;
                        if (activityInfo.name.contains("mail")) {
                            targeted.setPackage(activityInfo.packageName);
                            targetedShareIntents.add(targeted);
                        }
                    }
                    Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "report attached");
                    if (chooserIntent == null) {
                        return;
                    }
                    // A Parcelable[] of Intent or LabeledIntent objects as set with
                    // putExtra(String, Parcelable[]) of additional activities to place
                    // a the front of the list of choices, when shown to the user with a
                    // ACTION_CHOOSER.
                    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
                    startActivity(chooserIntent);

                }
            } catch (Exception e) {
                Log.e(LOG_TAG, "Unable to email logs " + e.toString());
            }


这里只是简单得过滤掉不包含“mail”的app,可能有些不是邮件客户端的app名字却有“mail”的漏网之鱼,具体再加过滤条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值