是否有任何URI可以指向Android中的GMAIL应用程序并帮我启动它?
答案 0 :(得分:68)
这只适用于gmail应用程序。
final Intent intent = new Intent(Intent.ACTION_VIEW)
.setType("plain/text")
.setData(Uri.parse("test@gmail.com"))
.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail")
.putExtra(Intent.EXTRA_EMAIL, new String[]{"test@gmail.com"})
.putExtra(Intent.EXTRA_SUBJECT, "test")
.putExtra(Intent.EXTRA_TEXT, "hello. this is a message sent from my demo app :-)");
startActivity(intent);
使用大量电子邮件:
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "test@gmail.com" });
单个电子邮件:
intent.setData(Uri.parse("test@gmail.com"));
您可以添加extra putExtra(Intent.EXTRA..)
并更改setType
以达到您的目的。 :P
更新(2014年1月22日): 请务必注意,如果您要使用此代码,请检查以确保用户的设备上安装了“com.google.android.gm”软件包。在任何语言中,请确保检查特定字符串和初始化的空值。
请参阅Launch an application from another application on Android
答案 1 :(得分:35)
我在我的应用中使用此功能:
Intent mailClient = new Intent(Intent.ACTION_VIEW);
mailClient.setClassName("com.google.android.gm", "com.google.android.gm.ConversationListActivity");
startActivity(mailClient);
答案 2 :(得分:13)
启动Gmail时没有记录和支持的Intent
- 抱歉!
答案 3 :(得分:13)
建议不要使用包名作为未记录的方法。如果包名称在某一天发生变化,代码将失败。
尝试使用此代码
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
"mailto", "abc@gmail.com", null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "This is my subject text");
context.startActivity(Intent.createChooser(emailIntent, null));
价: http://developer.android.com/reference/android/content/Intent.html#ACTION_SENDTO \
答案 4 :(得分:12)
使用此:
Intent intent = getPackageManager().getLaunchIntentForPackage("com.google.android.gm");
startActivity(intent);
这可能取决于设备和API级别。小心使用。
答案 5 :(得分:11)
后来要求更改为启动“电子邮件应用”,因此以下代码基本上启动了一个电子邮件应用,用户必须在显示的选项中进行选择。
所以,我必须使用
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_SUBJECT, "Emailing link");
intent.putExtra(Intent.EXTRA_TEXT, "Link is \n" +
"This is the body of hte message");
startActivity(Intent.createChooser(intent, ""));
答案 6 :(得分:7)
简单且100%正常工作
Intent intent = new Intent (Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"anyMail@gmail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "Any subject if you want");
intent.setPackage("com.google.android.gm");
if (intent.resolveActivity(getPackageManager())!=null)
startActivity(intent);
else
Toast.makeText(this,"Gmail App is not installed",Toast.LENGTH_SHORT).show();
答案 7 :(得分:7)
这个技巧适用于所有版本(API 3+),以及 text / plain 或 text / html (sonida):
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/html");
// intent.setType("text/plain");
final PackageManager pm = getPackageManager();
final List<ResolveInfo> matches = pm.queryIntentActivities(intent, 0);
ResolveInfo best = null;
for (final ResolveInfo info : matches) {
if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail")) {
best = info;
break;
}
}
if (best != null) {
intent.setClassName(best.activityInfo.packageName, best.activityInfo.name);
}
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "YOUR SUBJECT");
intent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml("YOUR EXTRAS"));
startActivity(intent);
答案 8 :(得分:6)
我尝试了很多解决方案,但最后我得到了一个对我来说很好的正确方法
android:background="@{questionMode.correct ? @color/slp_color_ebfde5 : @color/slp_color_ffeded}"
答案 9 :(得分:5)
有效。
Intent intent = new Intent(Intent.ACTION_SEND);
String[] strTo = { getString(R.string.mailto) };
intent.putExtra(Intent.EXTRA_EMAIL, strTo);
intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.mail_subject));
intent.putExtra(Intent.EXTRA_TEXT, getString(R.string.mail_body));
Uri attachments = Uri.parse(image_path);
intent.putExtra(Intent.EXTRA_STREAM, attachments);
intent.setType("message/rfc822");
intent.setPackage("com.google.android.gm");
startActivity(intent);
答案 10 :(得分:1)
最好的方法是使用通用方法/方法:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_SUBJECT, "Email Subject goes here");
intent.putExtra(Intent.EXTRA_TEXT, "Your Message goes here");
startActivity(Intent.createChooser(intent, ""));
这将为用户提供一个选择,使他们可以选择GMail(如果已安装)或他们拥有的任何其他电子邮件支持应用程序。
答案 11 :(得分:0)
是的,它的工作代码完美.....
Intent intent = new Intent(Intent.ACTION_SEND);
String[] strTo = { "test@g.com" };
intent.putExtra(Intent.EXTRA_EMAIL, strTo);
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "Body");
intent.setType("message/rfc822");
intent.setPackage("com.google.android.gm");
startActivity(intent);
答案 12 :(得分:0)
请检查以下代码,它将自动打开默认邮件编辑器。
try {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_APP_EMAIL);
context.startActivity(intent);
} catch (android.content.ActivityNotFoundException anfe) {
handleException();
}
答案 13 :(得分:0)
此答案很旧,但仍会出现在Google搜索的第一个位置。
因此,从Android文档中,现在更好的方法是:
public void composeEmail(String[] addresses, String subject, Uri attachment) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_STREAM, attachment);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
}
更多信息可以在here
找到答案 14 :(得分:0)
startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"+mailId)));
答案 15 :(得分:0)
像我这样的工作很简单:
Intent(Intent.ACTION_SEND).apply{
setPackage("com.google.android.gm")
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, "Go, go share text!")
}.also{readyIntent->
startActivity(readyIntent)
}
答案 16 :(得分:0)
final String package = "com.google.android.gm";
// return true if gmail is installed
boolean isGmailInstalled = isAppInstalled(MainActivity.this, package);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"mail@gamil.com"});
if (isGmailInstalled) {
intent.setType("text/html");
intent.setPackage(package);
startActivity(intent);
} else { // allow user to choose a different app to send email with
intent.setType("message/rfc822");
startActivity(Intent.createChooser(intent, "choose an email client"));
}
// Method to check if app is installed
private boolean isAppInstalled(Context context, String packageName) {
try {
context.getPackageManager().getApplicationInfo(packageName, 0);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
答案 17 :(得分:0)
此代码段将打开一个选择器,该选择器应指向Gmail收件箱。
df.where($"dt" >= "2011-01-01")
答案 18 :(得分:0)
Intent mailClient = new Intent(Intent.ACTION_VIEW); mailClient.setClassName(“ com.google.android.gm”,“ com.google.android.gm.ConversationListActivityGmail”); startActivity(mailClient);