Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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_Email_Android Intent_Inbox - Fatal编程技术网

如何从android代码打开默认邮件收件箱?

如何从android代码打开默认邮件收件箱?,android,email,android-intent,inbox,Android,Email,Android Intent,Inbox,我正在尝试将一个按钮链接到邮件应用程序。不是发送邮件,只是打开收件箱 我是否应该使用Intent Intent=newintent(…)执行此操作 如果是这样的话,()之间应该是什么?不幸的是,这看起来不太可能。这是以前问过的问题 您可以在撰写模式下打开电子邮件客户端,但您似乎已经知道了这一点。如果未配置设备中的默认邮件,有什么建议可以避免崩溃吗? You can use this but it is for gmail only Intent emailIntent = new I

我正在尝试将一个按钮链接到邮件应用程序。不是发送邮件,只是打开收件箱

我是否应该使用
Intent Intent=newintent(…)
执行此操作


如果是这样的话,
()
之间应该是什么?

不幸的是,这看起来不太可能。这是以前问过的问题


您可以在撰写模式下打开电子邮件客户端,但您似乎已经知道了这一点。

如果未配置设备中的默认邮件,有什么建议可以避免崩溃吗?

  You can use this but it is for gmail only

  Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);  
  emailIntent.setType("plain/text");
  startActivity(emailIntent); 
是的,可以打开Android默认的电子邮件收件箱。
使用此代码:



此代码有效,您必须首先配置Android设备的默认邮件。如果您已经配置了邮件,它可以正常工作。否则,它会强制关闭一个
NullPointerException

您可以使用以下方法打开Android默认电子邮件客户端:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.setClassName("com.android.email", "com.android.email.activity.Welcome");
emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(emailIntent);

这个代码对我有用。它将打开一个选择器,其中所有电子邮件应用都已注册到设备并直接进入收件箱:

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
如果目标是打开默认的电子邮件应用程序以查看收件箱,那么关键是添加一个意图类别,并使用操作\u主意图,如下所示:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_APP_EMAIL);
getActivity().startActivity(intent);

如果没有附件,您只需使用以下代码即可:

Intent i = new Intent(Intent.ACTION_SENDTO);
i.setData(Uri.parse("mailto:support@mailname.com")); 
i.putExtra(Intent.EXTRA_SUBJECT, "Feedback/Support");
startActivity(Intent.createChooser(emailIntent, "Send feedback"));
fun composeEmail(addresses: Array<String>, subject: String) {
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        data = Uri.parse("mailto:") // only email apps should handle this
        putExtra(Intent.EXTRA_EMAIL, addresses)
        putExtra(Intent.EXTRA_SUBJECT, subject)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}
有关详细信息,我建议访问:

意向电子邮件=新意向(意向.行动\u主要)

email.addCategory(Intent.CATEGORY\u APP\u email);
startActivity(电子邮件)

要打开新任务,请使用以下代码:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_APP_EMAIL);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

对于科特林:

Intent i = new Intent(Intent.ACTION_SENDTO);
i.setData(Uri.parse("mailto:support@mailname.com")); 
i.putExtra(Intent.EXTRA_SUBJECT, "Feedback/Support");
startActivity(Intent.createChooser(emailIntent, "Send feedback"));
fun composeEmail(addresses: Array<String>, subject: String) {
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        data = Uri.parse("mailto:") // only email apps should handle this
        putExtra(Intent.EXTRA_EMAIL, addresses)
        putExtra(Intent.EXTRA_SUBJECT, subject)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}
seemail(地址:数组,主题:字符串){
val intent=intent(intent.ACTION_SENDTO)。应用{
data=Uri.parse(“mailto:”)//只有电子邮件应用程序才能处理此问题
putExtra(Intent.EXTRA_电子邮件、地址)
putExtra(Intent.EXTRA_SUBJECT,SUBJECT)
}
if(intent.resolveActivity(packageManager)!=null){
星触觉(意图)
}
}

参考:

有点晚了,这里是正确的工作代码

Intent intent = Intent.makeMainSelectorActivity(
Intent.ACTION_MAIN,
Intent.CATEGORY_APP_EMAIL
);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, "Email"));
有关更多详细信息,请参阅本文档:



  • 抱歉,不是那个,但请尝试使用此oneIntent mailClient=new Intent(Intent.ACTION\u视图);mailClient.setClassName(“com.google.android.gm”、“com.google.android.gm.ConversationListActivity”);startActivity(mailClient);感谢您的回复。我刚刚意识到我正在尝试访问HTC邮件应用程序,而不是默认的邮件应用程序。有没有办法在收件箱中打开这个?或者你能告诉我在哪里可以找到这些信息吗?我如何传递邮件的主题和TO值?是否真的需要大写?你知道当有人给出答案时,试着在堆栈溢出上找出它的对错,而不是寻找大写或小写,如果你想享受这种乐趣,可以尝试其他有趣的网站,而不是这种编程网站。这是错误的:解决方案假设用户有一个带有“com.android.email”包的应用程序,并且它是他们使用的默认电子邮件应用程序。例如,如果我有K9邮件,并且我使用它作为默认客户机,那么打开股票邮件客户机对我来说没有用处。目的不是开玩笑,有一种叫做“网络礼仪”的东西。当你输入所有的大写字母时,会被认为是大声叫喊和粗鲁。除此之外,它使你的文本看起来令人讨厌,难以阅读。有大写字母和小写字母是有原因的。格式正确的文本比所有的大写字母可读性好得多。是的,这很好,你找到了我的错误,我没有完美地回答这个问题并给出了错误的答案,但你必须在第一次写下这条评论,而不是写下“大写字母真的有必要吗?”如果你知道正确的答案,请给我。。bcoz我只知道这个答案,就像我在上面给出的“如何从android代码打开默认邮件收件箱?”这样的问题一样。。!感谢您的回答。原因答案很重要。这构成了一封新的电子邮件,最初的问题是只打开默认的电子邮件应用程序。当无法解决启动意图时,此应用程序会崩溃–需要再次检查!完美答案你救了我的一天。快乐编码:)简单的方法,只启动电子邮件应用程序。非常感谢!!如何在react native中模拟此操作?@jasan-您需要创建一个自定义组件,以从js landfriendly提醒触发此逻辑:这将导致
    电子邮件
    活动在当前堆栈中打开(即在您的应用程序中),导致坏用户体验在新窗口中打开
    电子邮件
    ,添加行
    intent.addFlags(意图。在开始之前标记活动和新任务)
    。答案是信息性的,并显示有效性