在前面已經(jīng)學(xué)會(huì)了 Android 的意圖(Intent),這是落實(shí)意圖,即一個(gè)對(duì)象。來(lái)自一個(gè)部件的消息傳遞到另一個(gè)組件使用 - 在應(yīng)用程序或應(yīng)用程序之外。
因此這里不需要從頭開(kāi)始,因?yàn)樗鼈円呀?jīng)可以像 Gmail 和 K9mail 開(kāi)發(fā)電子郵件客戶端。但需要從 Android 應(yīng)用程序發(fā)送的電子郵件,編寫(xiě)一個(gè)活動(dòng)Activity,使用Android設(shè)備發(fā)送電子郵件需要啟動(dòng)電子郵件客戶端并發(fā)送電子郵件。為了這個(gè)目的,活動(dòng)將伴隨著相應(yīng)的數(shù)據(jù)負(fù)載一個(gè)ACTION_SEND發(fā)送到 Android 意圖解析器。指定選擇器提供適當(dāng)?shù)慕涌诠┯脩暨x擇如何發(fā)送電子郵件數(shù)據(jù)。
以下部分說(shuō)明 Intent 對(duì)象發(fā)送電子郵件。
使用ACTION_SEND 的動(dòng)作啟動(dòng) Android 設(shè)備上安裝一個(gè)電子郵件客戶端。以下是簡(jiǎn)單的語(yǔ)法創(chuàng)建一個(gè)Intent 用ACTION_SEND動(dòng)作
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用來(lái)提供文字?jǐn)?shù)據(jù)被發(fā)送 |
| 7 |
EXTRA_TITLE 一個(gè)CharSequence對(duì)話框的標(biāo)題,提供給用戶在ACTION_CHOOSER使用時(shí) |
下面是一個(gè)例子展示如何分配額外的數(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");
下面的示例演示如何在實(shí)際使用Intent對(duì)象啟動(dòng)電子郵件客戶端發(fā)送電子郵件給定的收件人。要測(cè)試這個(gè)例子,需要實(shí)際配備了最新的Android OS的移動(dòng)設(shè)備,否則仿真器可能無(wú)法正常工作。其次,需要在您的設(shè)備上安裝一個(gè)電子郵件客戶端,如 Gmail 或 K9mail
| 步驟 | 描述 |
|---|---|
| 1 | 使用Android Studio創(chuàng)建Android應(yīng)用程序,并將它命名為SendEmailDemounde。創(chuàng)建這個(gè)項(xiàng)目,確保目標(biāo)SDK并編譯在Android SDK為最新版本以及使用更高級(jí)別的API |
| 2 | 修改 src/MainActivity.java 文件,并添加所需的代碼,以發(fā)送電子郵件 |
| 3 | 修改所需的布局XML文件res/layout/activity_main.xml 添加GUI組件。這里添加一個(gè)簡(jiǎn)單的按鈕,啟動(dòng)電子郵件客戶端 |
| 4 | 修改res/values/strings.xml定義所需的常量值 |
| 5 | 修改 AndroidManifest.xml 如下所示 |
| 6 | 運(yùn)行該應(yīng)用程序啟動(dòng) Android模擬器并驗(yàn)證應(yīng)用程序所做的修改結(jié)果。 |
以下是修改的主活動(dòng)文件的內(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/手勢(shì)