Android應用開發中,很多情況下免不了要調用手機上的郵件類應用,實現郵件發送的功能,這一般是通過調用系統已有的Intent來實現的。看到網上很多郵件發送都是調用action為android.content.Intent.ACTION_SEND的Intent來實現的,下面我們就來看下這種方式實現的效果如何。
【使用Intent.ACTION_SEND方式】
具體的UI搭建我就不說了,很easy,直接看下發送的核心代碼就行:
[java] view plaincopyprint?
String[] email = {"3802**[email protected]"}; // 需要注意,email必須以數組形式傳入
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822"); // 設置郵件格式
intent.putExtra(Intent.EXTRA_EMAIL, email); // 接收人
intent.putExtra(Intent.EXTRA_CC, email); // 抄送人
intent.putExtra(Intent.EXTRA_SUBJECT, "這是郵件的主題部分"); // 主題
intent.putExtra(Intent.EXTRA_TEXT, "這是郵件的正文部分"); // 正文
startActivity(Intent.createChooser(intent, "請選擇郵件類應用"));
上面代碼的效果如下圖所示,將會拉起不止郵件類應用,這是很坑爹的事情,用戶體驗相當差。
從上面結果可以看出,ACTION_SEND不是首選的方案,更好的方案是能夠過濾非郵件類應用,只識別郵件類應用。這可以通過使用另外一個action來實現的。