如何从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(意图。在开始之前标记活动和新任务)
。答案是信息性的,并显示有效性