2012-11-16 56 views
0

我目前正在開發一個應用程序,可以發送短信和電子郵件。 沒什麼大不了的,這很容易做到。 這裏是我發短信:發送短信,然後發電子郵件

private void sendSms() { 
    Log.i("", "SEND SMS"); 
    Intent intent = new Intent(Intent.ACTION_VIEW, 
      Uri.parse("sms:123456789")); 
    intent.putExtra("sms_body", "My message"); 
    startActivity(intent); 
} 

這裏是我的代碼發送電子郵件:

private void sendEmail() { 
    Log.i("", "SEND"); 
    Intent email = new Intent(Intent.ACTION_SEND); 
    email.putExtra(Intent.EXTRA_EMAIL, "[email protected]"); 
    email.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
    email.putExtra(Intent.EXTRA_TEXT, "My body email"); 
    email.setType("message/rfc822"); 
    startActivity(Intent.createChooser(email, "Send an email:")); 
} 

獨立地,這些工作的偉大。

但是我想發送我的電子郵件,一旦我的短信發送或取消。 我無法找到如何找回SMS intent/activity的關閉事件來發送電子郵件。 有什麼想法?

+0

您可能需要等到一個活動退出。 – rekire

+0

你可以填寫你的答案嗎?我不明白你的意思。 – Gnial0id

+0

如果我猜對了,那麼你可以相互調用兩個函數。在開始第二個意圖之前,您可能需要等待第一個意向的退出。我可以想象你會重寫活動堆棧中的第一個意圖。 – rekire

回答

2

開始此類活動時,您應該使用startActivityForResult

然後,您可以通過實現onActivityResult方法獲得開始活動的結果

流會像下面

1)startActivityForResult(SEND_SMS_INTENT,SEND_SMS_REQUEST_CODE),其中SEND_SMS_REQUEST_CODE是一個整數你定義的常量

2)發送短信活動完成(取消或完成它的工作)

3)onActivityResult將在您的主機活動中使用SEND_SMS_REQUEST_CODE調用。 4)你可以再做if(requestCode == SEND_SMS_REQUEST_CODE)sendEmail();

您可以爲發送電子郵件活動做同樣的事情。

如果您有興趣瞭解子活動結果是什麼(例如:發送短信取消或實際發送),則可以使用onActivityResult resultCode參數。

+0

非常感謝。很簡單。我被困在'事件處理'像C#那樣。謝謝。 – Gnial0id

相關問題