2011-09-05 75 views
0

我希望我的應用程序的用戶能夠發送電子郵件,然後返回到我的應用程序。Intent.ACTION_SEND是一個有效的startActivityForResult()的intent協議嗎?

我實現了這個功能類似下面

Intent emailIntent = new Intent(Intent.ACTION_SEND);   
emailIntent.setType("text/plain"); 
emailIntent.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Message subject"); 
emailIntent.putExtra(Intent.EXTRA_TEXT , "Message text"); 
try { 
    startActivityForResult(Intent.createChooser(emailIntent, "Send mail..."), 42); 

} catch (android.content.ActivityNotFoundException ex) { 
    Toast toast = Toast.makeText(getApplicationContext(), "There are no email clients installed.", Toast.LENGTH_SHORT); 
    toast.show(); 
} 

我已經測試在HTC感覺的執行情況,並能正常工作,至少選擇Gmail應用程序時。

我的問題是在文檔中本節startActivityForResult() 「注意,此方法只應與被定義爲返回一個結果意向協議來使用。在其他協議(如ACTION_MAIN或ACTION_VIEW),你可能例如,如果您正在啓動的活動使用singleTask啓動模式,它將不會在您的任務中運行,因此您將立即收到取消結果。「

我已經搜索了意圖協議的列表,這些協議是用來從startActivityForResult()中使用的,但沒有找到任何協議。

有沒有這樣的清單?

可以從startActivityForResult()使用Intent.ACTION_SEND嗎?我可以在所有設備上預測相同的行爲嗎?

感謝

/馬蒂亞斯

回答

1

這是OK(你不會得到任何錯誤)來做到這一點。但是,您將不會收到onActivityResult中的任何相關結果,因此您應該致電startActivity()

該平臺不強制執行任何關於哪些意圖操作應該或不應該與startActivityForResult一起使用的規則。該文檔只是建議,你應該只使用這種方法與文件意圖返回的東西。

如果您依靠onActivityResult()來確定其他活動何時完成並且您的活動已恢復,那是不正確的。改用onResume()即可。