在前面已經(jīng)學(xué)會了 Android 的意圖(Intent),這是落實意圖,即一個對象。來自一個部件的消息傳遞到另一個組件使用 - 在應(yīng)用程序或應(yīng)用程序之外。
因此這里不需要從頭開始,因為它們已經(jīng)可以像 Gmail 和 K9mail 開發(fā)電子郵件客戶端。但需要從 Android 應(yīng)用程序發(fā)送的電子郵件,編寫一個活動Activity,使用Android設(shè)備發(fā)送電子郵件需要啟動電子郵件客戶端并發(fā)送電子郵件。為了這個目的,活動將伴隨著相應(yīng)的數(shù)據(jù)負(fù)載一個ACTION_SEND發(fā)送到 Android 意圖解析器。指定選擇器提供適當(dāng)?shù)慕涌诠┯脩暨x擇如何發(fā)送電子郵件數(shù)據(jù)。
以下部分說明 Intent 對象發(fā)送電子郵件。
使用ACTION_SEND 的動作啟動 Android 設(shè)備上安裝一個電子郵件客戶端。以下是簡單的語法創(chuàng)建一個Intent 用ACTION_SEND動作
Intent emailIntent = new Intent(Intent.ACTION_SEND);
要發(fā)送電子郵件,需要指定mailto:URI使用 setData() 方法并且數(shù)據(jù)類型是text/plain使用settype()方法如下:
emailIntent.setData(Uri.parse("mailto:")); emailIntent.setType("text/plain");
Android已經(jīng)內(nèi)置支持TO, SUBJECT, CC, TEXT等域,可以在附加 Intent 之前發(fā)送到目標(biāo)的電子郵件客戶端的Intent??梢允褂妙~外的字段后電子郵件:
S.N. | 額外數(shù)據(jù) & 描述 |
---|---|
1 |
EXTRA_BCC String[] 持有應(yīng)密件復(fù)制電子郵件地址 |
2 |
EXTRA_CC String[] 持有復(fù)制電子郵件地址 |
3 |
EXTRA_EMAIL String[] 持有應(yīng)遞送到電子郵件地址 |
4 |
EXTRA_HTML_TEXT 與該意圖相關(guān)聯(lián)的常數(shù)字符串,使用 ACTION_SEND 替代 EXTRA_TEXT 為 HTML 格式的文本 |
5 |
EXTRA_SUBJECT 常量字符串持有一條消息的所需主題行 |
6 |
EXTRA_TEXT 與該意圖相關(guān)聯(lián)的CharSequence常量,具有ACTION_SEND用來提供文字?jǐn)?shù)據(jù)被發(fā)送 |
7 |
EXTRA_TITLE 一個CharSequence對話框的標(biāo)題,提供給用戶在ACTION_CHOOSER使用時 |
下面是一個例子展示如何分配額外的數(shù)據(jù)到 intent
emailIntent.putExtra(Intent.EXTRA_EMAIL , new String[]{"recipient@example.com"}); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject of email"); emailIntent.putExtra(Intent.EXTRA_TEXT , "body of email");
下面的示例演示如何在實際使用Intent對象啟動電子郵件客戶端發(fā)送電子郵件給定的收件人。要測試這個例子,需要實際配備了最新的Android OS的移動設(shè)備,否則仿真器可能無法正常工作。其次,需要在您的設(shè)備上安裝一個電子郵件客戶端,如 Gmail 或 K9mail
步驟 | 描述 |
---|---|
1 | 使用Android Studio創(chuàng)建Android應(yīng)用程序,并將它命名為SendEmailDemounde。創(chuàng)建這個項目,確保目標(biāo)SDK并編譯在Android SDK為最新版本以及使用更高級別的API |
2 | 修改 src/MainActivity.java 文件,并添加所需的代碼,以發(fā)送電子郵件 |
3 | 修改所需的布局XML文件res/layout/activity_main.xml 添加GUI組件。這里添加一個簡單的按鈕,啟動電子郵件客戶端 |
4 | 修改res/values/strings.xml定義所需的常量值 |
5 | 修改 AndroidManifest.xml 如下所示 |
6 | 運行該應(yīng)用程序啟動 Android模擬器并驗證應(yīng)用程序所做的修改結(jié)果。 |
以下是修改的主活動文件的內(nèi)容 src/com.yiibai.sendemaildemo/MainActivity.java.
package com.example.sendemaildemo; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button startBtn = (Button) findViewById(R.id.sendEmail); startBtn.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { sendEmail(); } }); } protected void sendEmail() { Log.i("Send email", ""); String[] TO = {"amrood.admin@gmail.com"}; String[] CC = {"mcmohd@gmail.com"}; Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.setData(Uri.parse("mailto:")); emailIntent.setType("text/plain"); emailIntent.putExtra(Intent.EXTRA_EMAIL, TO); emailIntent.putExtra(Intent.上一篇:Android ProgressDialog下一篇:Android Gestures/手勢