android createChooser 过滤多余app

来源:互联网 发布:baby对赌协议知乎 编辑:程序博客网 时间:2024/06/05 21:29

比如说,想发送带有附件的邮件,然后打开邮件的客户端,结果弹出一大群的不相关的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”的漏网之鱼,具体再加过滤条件

0 0
原创粉丝点击