Intent.ACTION_SENDTO显示两个选项,我只想显示一个

时间:2014-09-01 09:13:39

标签: android android-intent

Intent.ACTION_SENDTO显示两个选项,但我的客户要求删除gmail选项,我没有看到出路请帮帮我

  Intent emailIntent =
 new Intent(Intent.ACTION_SENDTO,
 Uri.fromParts( "mailto",userInput.getText().toString(), null));
 emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Press Release");
 emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Please view this press release");
 startActivity(Intent.createChooser(emailIntent,"Send mail using..."));

enter image description here

2 个答案:

答案 0 :(得分:4)

使用 在调用startActivity之前emailIntent.setPackage(PackageName of Email app);


您需要设置电子邮件客户端软件包名称,但在三星设备com.sec.android.email是默认的内置邮件客户端,但在HTC中它是com.htc.android.mail,依此类推。首先,您需要过滤该应用程序,然后设置为intent。我正在添加解决方案

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
        "mailto", userInput.getText().toString(), null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Press Release");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
        "Please view this press release");

// Identify the package name of email client and set to intent
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(emailIntent, 0);
if (!resInfo.isEmpty()) {
    for (ResolveInfo info : resInfo) {
        if (info.activityInfo.packageName.toLowerCase().contains(".android.email")
                || info.activityInfo.name.toLowerCase().contains(".android.email")) {
            emailIntent.setPackage(info.activityInfo.packageName);
            // And now call
            startActivity(Intent.createChooser(emailIntent, "Send mail using..."));
        }
    }
}

您应该阅读Android: How to get the native Email clients package name

答案 1 :(得分:0)

如果您想要从列表中删除GMAIL客户端,请创建一个自定义的cooser

  List<Intent> intents = new ArrayList<Intent>();
            Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND);
            sendIntent.setType("text/plain");
            List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(sendIntent, 0);
            if (!resInfo.isEmpty()){
                for (ResolveInfo resolveInfo : resInfo) {
                    String packageName = resolveInfo.activityInfo.packageName;
                    Intent neededShareIntent = new Intent(android.content.Intent.ACTION_SEND);
                    neededShareIntent.setType("text/plain");
                    neededShareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject");
                    neededShareIntent.setPackage(packageName);
                    if (!StringUtils.equals(packageName, "com.google.android.gm")){
                        intents.add(neededShareIntent);
                    }

                }
                Intent chooserIntent = Intent.createChooser(intents.remove(0), "Select app to share");

                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents.toArray(new Parcelable[]{}));

                startActivity(chooserIntent);
            }

请测试此代码并检查