用于启动Gmail应用程序的意图URI
有没有任何URI可以指向Android的GMAIL应用程序,并帮助我启动它?
我在我的应用程序中使用这个:
Intent mailClient = new Intent(Intent.ACTION_VIEW); mailClient.setClassName("com.google.android.gm", "com.google.android.gm.ConversationListActivity"); startActivity(mailClient);
这工作意图只是gmail应用程序。
Intent sendIntent = new Intent(Intent.ACTION_VIEW); sendIntent.setType("plain/text"); sendIntent.setData(Uri.parse("test@gmail.com")); sendIntent.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "test@gmail.com" }); sendIntent.putExtra(Intent.EXTRA_SUBJECT, "test"); sendIntent.putExtra(Intent.EXTRA_TEXT, "hello. this is a message sent from my demo app :-)"); startActivity(sendIntent);
使用大量的电子邮件:sendIntent.putExtra(Intent.EXTRA_EMAIL,新的string[] {“test@gmail.com”}); 对于单个电子邮件:sendIntent.setData(Uri.parse(“test@gmail.com”));
您可以添加额外的“putExtra(Intent.EXTRA ..)”并更改“setType”为您的目的。 :P
更新(1/22/14):需要注意的是,如果您要使用此代码,请检查以确保用户在其设备上安装了“com.google.android.gm”包。 在任何语言中,确保检查特定string和初始化为空。
请参阅从Android上的另一个应用程序启动应用程序
没有logging和支持启动Gmail的Intent
– 对不起!
不推荐使用软件包名称作为其无证方法。 如果包名称有一天发生变化,代码将会失败。
试试这个代码
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 \
今天我尝试了很多东西,我感到沮丧。 我只是想启动电子邮件客户端…这是为我解决了这个问题:
Intent intent = getPackageManager().getLaunchIntentForPackage("com.google.android.gm"); startActivity(intent);
这可能是设备和API级别相关的。 小心使用。
后来的要求改为启动一个“电子邮件应用程序”,所以下面的代码基本上启动一个电子邮件应用程序,用户必须select显示的select。
所以,我不得不使用
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, ""));
这个技巧适用于所有版本(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);
有用。
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);
简单和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();
尝试这个
我已经尝试了很多解决scheme,但最后我得到了一个正确的方式,对我来说工作正常
try { Intent intent = new Intent (Intent.ACTION_VIEW , Uri.parse("mailto:" + "your_emailid@gmail.com")); intent.putExtra(Intent.EXTRA_SUBJECT, "your_subject"); intent.putExtra(Intent.EXTRA_TEXT, "your_text"); startActivity(intent); } catch(Exception e) { Toast.makeText(Share.this, "Sorry...You don't have any mail app", Toast.LENGTH_SHORT).show(); e.printStackTrace(); }
注意
- 这将打开您已安装的邮件应用程序( 电子邮件 , Gmail )发送邮件,您可以在其中select一个。
- 不要使用像(“com.google.android.gm”)这样的直接软件包名称,因为将来如果他们更改软件包名称,您的应用程序将面临问题。
是的,它的工作代码完美…..
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);
我使用这个函数首先通过gmail发送邮件,如果没有findgmail,则提示intent chooser。 希望它能帮助你:
public static void sentEmail(Context mContext, String[] addresses, String subject, String body) { try { Intent sendIntentGmail = new Intent(Intent.ACTION_VIEW); sendIntentGmail.setType("plain/text"); sendIntentGmail.setData(Uri.parse(TextUtils.join(",", addresses))); sendIntentGmail.setClassName("com.google.android.gm", "com.google.android.gm.ComposeActivityGmail"); sendIntentGmail.putExtra(Intent.EXTRA_EMAIL, addresses); if (subject != null) sendIntentGmail.putExtra(Intent.EXTRA_SUBJECT, subject); if (body != null) sendIntentGmail.putExtra(Intent.EXTRA_TEXT, body); mContext.startActivity(sendIntentGmail); } catch (Exception e) { //When Gmail App is not installed or disable Intent sendIntentIfGmailFail = new Intent(Intent.ACTION_SEND); sendIntentIfGmailFail.setType("*/*"); sendIntentIfGmailFail.putExtra(Intent.EXTRA_EMAIL, addresses); if (subject != null) sendIntentIfGmailFail.putExtra(Intent.EXTRA_SUBJECT, subject); if (body != null) sendIntentIfGmailFail.putExtra(Intent.EXTRA_TEXT, body); if (sendIntentIfGmailFail.resolveActivity(mContext.getPackageManager()) != null) { mContext.startActivity(sendIntentIfGmailFail); } } }
请检查下面的代码,它会自动打开默认的邮件编辑器。
try { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_APP_EMAIL); context.startActivity(intent); } catch (android.content.ActivityNotFoundException anfe) { handleException(); }