這甚至可以不調用特定的包?我發現了無數通過意向發送電子郵件的例子,但我沒有發現簡單地通過按鈕按鈕打開設備上的默認電子郵件客戶端(最好在用戶有多個客戶端的情況下使用選擇器對話框)。如何直接啓動電子郵件客戶端到收件箱視圖?
回答
沒有標準Intent
操作來打開「設備上的默認電子郵件客戶端」的「收件箱視圖」。
有沒有我可以用來打開默認電子郵件客戶端的標準意向操作? (即使它不是收件箱視圖 - 只需觸摸主屏幕上的圖標啓動應用程序就可以啓動它) – wirbly 2010-08-15 23:21:27
@wirbly:不,對不起。 – CommonsWare 2010-08-16 04:20:44
好的,謝謝你的信息。看起來我正在調用一個特定的包。 – wirbly 2010-08-16 13:12:00
你可以從你的活動對象試試這個:
不一定會帶你到收件箱直接,但它會打開電子郵件應用程序:
Intent intent = getPackageManager().getLaunchIntentForPackage("com.android.email");
startActivity(intent);
如果Android電子郵件客戶端是默認的電子郵件程序(很少屬於這種情況),那麼這個方法就行得通。如果不是,則startActivity會引發異常。 – KPK 2012-02-07 02:38:40
即使它的默認應用程序它不會工作。我記得一些HTC手機有不同的電子郵件包命名,如「com.htc.android.email」。所以這不起作用 – 2012-02-07 18:33:45
沒有默認/簡單的方法來做這個。此代碼爲我工作。它打開一個選擇器與所有電子郵件應用程序註冊到設備,並直接到收件箱:
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);
}
最初這看起來像非常可怕的代碼,但它仍然工作!我爲沒有安裝郵件客戶端的手機添加了一個else語句。 – user1354603 2015-02-09 10:41:37
此代碼是我發現的唯一解決方案,我發現它可以幫助我打開電子郵件收件箱(無需編寫新的電子郵件),同時它可以讓您選擇對話框,這非常棒,謝謝Larisa – Sniper 2016-09-17 18:21:03
唯一的代碼位那有效。你應該把它包裝成一個幫手,並把它放在GitHub Gists上。日Thnx! – CelticParser 2017-01-30 16:29:03
- 1. 啓動從剃刀視圖中的電子郵件客戶端
- 2. CSS的電子郵件客戶端的收件箱
- 3. 客戶端更新 - PHP/ASP - 電子郵件收件箱
- 4. Android - 如何直接打開電子郵件客戶端
- 5. 通過客戶端發送郵件,無需啓動電子郵件客戶端(無提示電子郵件)
- 6. 如何將交易電子郵件直接發送到收件箱?
- 7. 啓動電子郵件客戶端不包括附件
- 8. HTML電子郵件圖像不顯示在移動電子郵件客戶端
- 9. 是否可以閱讀默認Android電子郵件客戶端的收件箱?
- 10. 意圖打開電子郵件客戶端,短信客戶端
- 11. 動態電子郵件模板到不同的電子郵件客戶端 - PHP
- 12. 我怎樣才能得到Gmail /電子郵件客戶端收件箱文件夾中的郵件?
- 13. 電子郵件超鏈接允許用戶選擇電子郵件客戶端
- 14. 從setOnAction啓動電子郵件客戶端
- 15. 如何在LinkButton點擊事件上啓動電子郵件客戶端?
- 16. 檢測電子郵件發送的電子郵件客戶端
- 17. 發送電子郵件客戶端兼容電子郵件
- 18. 如何將每封電子郵件從收件箱移動到子文件夾
- 19. PHP郵件()和圖像顯示在電子郵件客戶端
- 20. 如何使用Three20的URL參數啓動帶有電子郵件地址的電子郵件客戶端
- 21. 電子郵件收件箱集成
- 22. 查詢電子郵件收件箱
- 23. 顯示電子郵件收件箱?
- 24. 某些電子郵件客戶端中的HTML電子郵件中的鏈接
- 25. 如何使用電子郵件客戶端發送電子郵件?
- 26. 如何從電子郵件客戶端獲取電子郵件通知?
- 27. 如何在Web電子郵件客戶端中顯示HTML電子郵件?
- 28. SugarCRM中的入站電子郵件如果從其他電子郵件客戶端讀取,則無法接收
- 29. 電子郵件轉到垃圾郵件而不是收件箱
- 30. PHP打開電子郵件客戶端
我很好奇你爲什麼要這樣做。 – MatrixFrog 2010-08-15 23:05:40
客戶希望他們的應用程序有一個「電子郵件」按鈕,它只是啓動默認郵件客戶端來檢查公司郵件。 – wirbly 2010-08-15 23:16:03