2011-04-26 34 views
2

我正在使用下面的代碼。問題是,當我在設備上運行此代碼。它打開了一個Dailogbox,其中包含3個發送郵件的選項。 「POP,電子郵件,Gmail」等 通過點擊gamil作曲家出現。 我只想直接顯示Gamil郵件編輯器。而不是顯示用於選擇選項的dailog框。請幫幫我。如何在android中直接打開Gmail郵件編輯器?

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
emailIntent.setType("text/html"); 

String subject = "My Subject"; 

emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); 

emailIntent.setType("text/html"); 

String title = "<p align='center'>" + storyTitle + "<br/>" + storyPubDate + "</p>"; 

String data = "<p> Sent From ABC APP Sent from my Android </p>"; 

      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(title + data)); 
startActivity(Intent.createChooser(emailIntent, "Email:")); 

回答

0

您無法以編程方式繞過此彈出窗口。如果用戶嘗試訪問該功能並且未配置GMail,會發生什麼情況?

如果你想繞過只是刪除所有其他電子郵件客戶端,以便GMail是唯一可以發送/接收電子郵件。這樣彈出窗口不會出現。

+0

是的,如果沒有配置Gmail,肯定不會。但是,如何從我的設備中刪除所有其他客戶端? – Arslan 2011-04-26 11:32:16

5

不確定是否需要選擇器。這是從我的應用程序之一...

  final Intent intent = new Intent(Intent.ACTION_SEND); 
      intent.setType("plain/text"); 
      intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
      intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
      intent.putExtra(Intent.EXTRA_TEXT, content); 
      activity.startActivity(intent); 
+2

請注意,setType應該是text/plain而非plain/text(否則您將得到ActivityNotFoundException)。謝謝你的提示! – Andrew 2011-12-28 23:36:35

0

如果你在你的Android設備有幾個郵件作曲家,你只是想爲你的要求賈米勒作曲家開始,你必須

emailIntent.setClassName("xxxgamil composer package name xxx", "xxxgmail composer class name xxx"); 
    startActivity(emailIntent); 
+0

我找到了代碼。它看起來像你的代碼 Intent intent = new Intent(android.content.Intent.ACTION_SEND); intent.setType(「text/plain」); final PackageManager pm = getPackageManager(); final列表 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; if(best!= null) intent.setClassName(best.activityInfo.packageName,best.activityInfo.name); startActivity(intent); – Arslan 2011-04-26 11:39:26

+0

yes ....和Mojo的鏈接也很有用。 – 2011-04-27 03:36:33

+0

完成。但發送郵件後。它再次顯示給對話框。我不想再打開它了? 有什麼建議嗎? – Arslan 2011-04-27 09:02:46

15

試試這個一個完美的

public void shareToGMail(String[] email, String subject, String content) { 
    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.putExtra(Intent.EXTRA_EMAIL, email); 
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); 
    emailIntent.setType("text/plain"); 
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, content); 
    final PackageManager pm = activity.getPackageManager(); 
    final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0); 
    ResolveInfo best = null; 
    for(final ResolveInfo info : matches) 
     if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail")) 
      best = info; 
    if (best != null) 
     emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name); 
    activity.startActivity(emailIntent); 
} 
+0

該答案適用於我。 – 2015-04-17 03:05:38

+0

謝謝1+。它爲我工作。 – Ninja 2017-06-17 12:23:29

0

下面的代碼爲我工作。這將搜索電子郵件客戶端,並直接啓動新的電子郵件編輯器,並預先填寫發送的值。如果沒有電子郵件客戶端存在,那麼應該被捕獲以避免崩潰。

好的思考這個解決方案是,在後面按它直接到你的應用程序屏幕的電子郵件目的是從哪裏開始。

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:")); 
    intent.putExtra(Intent.EXTRA_SUBJECT, "Your Subject"); 
    intent.putExtra(Intent.EXTRA_TEXT, "The message"); 
    try { 
     startActivity(intent); 
    } catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(this, "Mail account not configured", Toast.LENGHT_SHORT).show(); 
    } 

謝謝!

相關問題