Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将电子邮件客户端直接启动到收件箱视图?_Android_Android Intent - Fatal编程技术网

Android 如何将电子邮件客户端直接启动到收件箱视图?

Android 如何将电子邮件客户端直接启动到收件箱视图?,android,android-intent,Android,Android Intent,这甚至可以不调用特定的包吗?我已经找到了无数通过intent发送电子邮件的例子,但我找不到任何关于通过按键打开设备上的默认电子邮件客户端的方法(如果用户有多个客户端,最好使用选择器对话框)。没有标准的intent操作来打开“设备上的默认电子邮件客户端”。您可以从活动对象尝试此操作: 它不一定会直接将您带到收件箱,但会打开电子邮件应用程序: Intent intent = getPackageManager().getLaunchIntentForPackage("com.android.emai

这甚至可以不调用特定的包吗?我已经找到了无数通过intent发送电子邮件的例子,但我找不到任何关于通过按键打开设备上的默认电子邮件客户端的方法(如果用户有多个客户端,最好使用选择器对话框)。

没有标准的
intent
操作来打开“设备上的默认电子邮件客户端”。

您可以从活动对象尝试此操作:

它不一定会直接将您带到收件箱,但会打开电子邮件应用程序:

Intent intent = getPackageManager().getLaunchIntentForPackage("com.android.email");
startActivity(intent); 

没有默认/简单的方法可以做到这一点。此代码对我有效。它会打开一个选择器,其中所有电子邮件应用都注册到设备并直接进入收件箱:

    Intent emailIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:"));
    PackageManager pm = getPackageManager();

    List<ResolveInfo> resInfo = pm.queryIntentActivities(emailIntent, 0);
    if (resInfo.size() > 0) {
        ResolveInfo ri = resInfo.get(0);
        // First create an intent with only the package name of the first registered email app
        // and build a picked based on it
        Intent intentChooser = pm.getLaunchIntentForPackage(ri.activityInfo.packageName);
        Intent openInChooser =
                Intent.createChooser(intentChooser,
                        getString(R.string.user_reg_email_client_chooser_title));

        // Then create a list of LabeledIntent for the rest of the registered email apps 
        List<LabeledIntent> intentList = new ArrayList<LabeledIntent>();
        for (int i = 1; i < resInfo.size(); i++) {
            // Extract the label and repackage it in a LabeledIntent
            ri = resInfo.get(i);
            String packageName = ri.activityInfo.packageName;
            Intent intent = pm.getLaunchIntentForPackage(packageName);
            intentList.add(new LabeledIntent(intent, packageName, ri.loadLabel(pm), ri.icon));
        }

        LabeledIntent[] extraIntents = intentList.toArray(new LabeledIntent[intentList.size()]);
        // Add the rest of the email apps to the picker selection
        openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents);
        startActivity(openInChooser);
    }
Intent-emailIntent=newintent(Intent.ACTION_视图,Uri.parse(“mailto:”);
PackageManager pm=getPackageManager();
List resInfo=pm.querytentActivities(emailIntent,0);
如果(resInfo.size()>0){
ResolveInfo ri=resInfo.get(0);
//首先,仅使用第一个注册的电子邮件应用程序的程序包名称创建意图
//并在此基础上构建一个
Intent-intentChooser=pm.getLaunchIntentForPackage(ri.activityInfo.packageName);
意向开放式选择器=
Intent.createChooser(intentChooser,
getString(R.string.user\u reg\u email\u client\u chooser\u title));
//然后为其余已注册的电子邮件应用程序创建一个标签内容列表
List intentList=new ArrayList();
对于(int i=1;i
这一款现在很管用

   Intent intent = new Intent("android.intent.action.MAIN");
        intent.addCategory("android.intent.category.APP_EMAIL");
        startActivity(Intent.createChooser(intent, ""));

我很好奇你为什么要这样做。客户端希望他们的应用程序有一个“电子邮件”按钮,它只需启动默认邮件客户端来检查公司邮件。我是否可以使用任何标准的意图操作来打开默认邮件客户端?(即使不是收件箱视图-只需以相同的方式启动应用程序,触摸主屏幕上的图标即可启动应用程序)好的,谢谢你提供的信息。看起来我正在调用一个特定的软件包。如果Android电子邮件客户端是默认的电子邮件程序(很少是这种情况),这个软件就可以运行了。如果不是,startActivity会抛出一个例外。即使它是默认应用程序,它也不会工作。我记得一些htc手机的电子邮件包的名称不同,类似于“com.htc.android.email”“。因此,这不会起作用。这看起来像是非常可怕的代码,但它仍然起作用!我为没有安装邮件客户端的手机添加了一个else语句。这是我发现的唯一一个帮助我打开电子邮件收件箱的解决方案(无需编写新的电子邮件),同时它还提供了选择器对话框,非常棒,感谢Larisat,这是唯一一段有效的代码。你应该将它包装成一个帮助程序,并将其放到GitHub Gists上。THNX!这是迄今为止最好的答案。创建一个所有可用电子邮件的选择器,单击后,只启动应用程序。这将只打开Gmail,而不会打开选择器对于您选择的电子邮件应用程序。好的,哪一个android版本?我很确定,去年我尝试它时,它给了选择器,前提是您有多个应用程序声称可以使用该应用程序。\u email.Nexus 5X API 28,Pixel 2 API 28安装三星电子邮件客户端后,我刚刚在Nexus 5X API 29 emulator上尝试了该代码,它给出了一个选择在两个电子邮件客户端之间。从emulator卸载三星电子邮件客户端后,它将直接打开gmail。您在emulator中安装了其他哪些电子邮件客户端?可能它没有实现侦听器的目的。我在emulator上安装了Yahoo Mail作为应用程序。在我自己的samsung 7上,我也安装了Outlook,未使用此版本打开。您在早期api级别上尝试过吗?我建议您再试一次,因为它似乎没有按您所希望的方式工作。