Android-如何从电子邮件选择器列表中排除PayPal?

Android-如何从电子邮件选择器列表中排除PayPal?,android,kotlin,android-intent,paypal,android-intent-chooser,Android,Kotlin,Android Intent,Paypal,Android Intent Chooser,我正在使用此代码通过intent打开电子邮件选择器 val mIntent = Intent( Intent.ACTION_SENDTO, Uri.fromParts( "mailto", "name@email.com", null ) ) mIntent.putExtra(Intent.EXTRA_SUBJECT, "[Feedback - App Name]") mIntent.putExtra(Intent.EXTRA_TEXT, "")

我正在使用此代码通过intent打开电子邮件选择器

val mIntent = Intent(
    Intent.ACTION_SENDTO, Uri.fromParts(
        "mailto",
        "name@email.com", null
    )
)
mIntent.putExtra(Intent.EXTRA_SUBJECT, "[Feedback - App Name]")
mIntent.putExtra(Intent.EXTRA_TEXT, "")
try {
    startActivity(Intent.createChooser(mIntent, "Choose Email Client..."))
} catch (e: Exception) {
    (activity as MainActivity).showToast("There are no email clients installed.")
}
它的工作原理与预期一样,但它还包括电子邮件客户端列表中的PayPal应用程序

单击PayPal,如果电子邮件已在PayPal注册,则会重定向到付款页面。若未注册,则显示在屏幕下方

在这两种情况下,都没有从PayPal应用程序发送电子邮件的选项

那么,如何在意向选择器中仅包含电子邮件客户端

我也尝试过这段代码,它的结果也是一样的

val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:")
intent.putExtra(Intent.EXTRA_EMAIL, "addresses")
intent.putExtra(Intent.EXTRA_SUBJECT, "subject")
if (intent.resolveActivity(activity?.getPackageManager()!!) != null) {
    startActivity(Intent.createChooser(intent, "Choose Email Client..."))
}

编辑:


我已经签入了打开相同对话框的其他应用程序。可能是PayPal应用正在侦听邮件事件。

请查看以下内容:

 private void openEmailApp() {
      List<Intent> emailAppLauncherIntents = new ArrayList<>();

      //Intent that only email apps can handle:
      Intent emailAppIntent = new Intent(Intent.ACTION_SENDTO);
      emailAppIntent.setData(Uri.parse("mailto:"));
      emailAppIntent.putExtra(Intent.EXTRA_EMAIL, "");
      emailAppIntent.putExtra(Intent.EXTRA_SUBJECT, "");

      PackageManager packageManager = getPackageManager();

      //All installed apps that can handle email intent:
      List<ResolveInfo> emailApps = packageManager.queryIntentActivities(emailAppIntent, PackageManager.MATCH_ALL);

      for (ResolveInfo resolveInfo : emailApps) {
        String packageName = resolveInfo.activityInfo.packageName;
        Intent launchIntent = packageManager.getLaunchIntentForPackage(packageName);
        emailAppLauncherIntents.add(launchIntent);
      }

      //Create chooser
      Intent chooserIntent = Intent.createChooser(new Intent(), "Select email app:");
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, emailAppLauncherIntents.toArray(new Parcelable[emailAppLauncherIntents.size()]));
      startActivity(chooserIntent);
    }

请调查一下:

 private void openEmailApp() {
      List<Intent> emailAppLauncherIntents = new ArrayList<>();

      //Intent that only email apps can handle:
      Intent emailAppIntent = new Intent(Intent.ACTION_SENDTO);
      emailAppIntent.setData(Uri.parse("mailto:"));
      emailAppIntent.putExtra(Intent.EXTRA_EMAIL, "");
      emailAppIntent.putExtra(Intent.EXTRA_SUBJECT, "");

      PackageManager packageManager = getPackageManager();

      //All installed apps that can handle email intent:
      List<ResolveInfo> emailApps = packageManager.queryIntentActivities(emailAppIntent, PackageManager.MATCH_ALL);

      for (ResolveInfo resolveInfo : emailApps) {
        String packageName = resolveInfo.activityInfo.packageName;
        Intent launchIntent = packageManager.getLaunchIntentForPackage(packageName);
        emailAppLauncherIntents.add(launchIntent);
      }

      //Create chooser
      Intent chooserIntent = Intent.createChooser(new Intent(), "Select email app:");
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, emailAppLauncherIntents.toArray(new Parcelable[emailAppLauncherIntents.size()]));
      startActivity(chooserIntent);
    }

您可以循环使用意图包名称并删除PayPal。然后使用筛选列表创建选择器

val-emailAppLauncherIntents=ArrayList()
//只有电子邮件应用程序才能处理的意图:
val emailAppIntent=Intent(Intent.ACTION_SENDTO)
emailAppIntent.data=Uri.parse(“mailto:”)
val packageManager=requireActivity().packageManager
//可处理电子邮件意图的所有已安装应用程序
val emailApps=if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.M){
packageManager.QueryInputActivities(emailAppIntent、packageManager.MATCH_ALL)
}否则{
packageManager.QueryInputActivities(仅emailAppIntent、packageManager.MATCH_默认值_)
}
emailApps.forEach{resolveInfo->
val packageName=resolveInfo.activityInfo.packageName
val launchIntent=packageManager.getLaunchIntentForPackage(packageName)
//Paypal显示发送意图-我们不希望这样
如果(!packageName.contains(“贝宝”)&&launchIntent!=null){
emailAppLauncherIntents.add(launchIntent)
}
}
val chooser=Intent.createChooser(Intent(),getString(R.string.select\u email\u client))
chooser.putExtra(Intent.EXTRA\u INITIAL\u INTENTS,emailAppLauncherIntents.toTypedArray())
星触觉(选择器)

您可以循环查看意向软件包名称并删除PayPal。然后使用筛选列表创建选择器

val-emailAppLauncherIntents=ArrayList()
//只有电子邮件应用程序才能处理的意图:
val emailAppIntent=Intent(Intent.ACTION_SENDTO)
emailAppIntent.data=Uri.parse(“mailto:”)
val packageManager=requireActivity().packageManager
//可处理电子邮件意图的所有已安装应用程序
val emailApps=if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.M){
packageManager.QueryInputActivities(emailAppIntent、packageManager.MATCH_ALL)
}否则{
packageManager.QueryInputActivities(仅emailAppIntent、packageManager.MATCH_默认值_)
}
emailApps.forEach{resolveInfo->
val packageName=resolveInfo.activityInfo.packageName
val launchIntent=packageManager.getLaunchIntentForPackage(packageName)
//Paypal显示发送意图-我们不希望这样
如果(!packageName.contains(“贝宝”)&&launchIntent!=null){
emailAppLauncherIntents.add(launchIntent)
}
}
val chooser=Intent.createChooser(Intent(),getString(R.string.select\u email\u client))
chooser.putExtra(Intent.EXTRA\u INITIAL\u INTENTS,emailAppLauncherIntents.toTypedArray())
星触觉(选择器)

我用过的相同代码,也插入了上面的问题。我用过的相同代码,也插入了上面的问题。我对paypalI有相同的问题我对paypal也有相同的问题