我有一些代碼正在偵聽套接字上的消息,並將套接字中的數據解析爲要發送的電子郵件。我能夠創造的意圖,並設置FLAG_ACTIVITY_NEW_TASK標誌就可以了,但是呢,當我打電話 startActivity(Intent.createChooser(intent, "Email"));
Android開發 - 從服務開始活動
我得到一個AndoridRuntimeException:從活動上下文之外調用startActivity()需要FLAG_ACTIVITY_NEW_TASK標誌。這真的是你想要的嗎?
什麼混淆我在這是,我已經明確要求 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
我失去的東西在這裏很明顯?
protected void doEmail(DataInputStream in) throws IOException {
String id = in.readUTF();
createEmail(id);
}
protected void createEmail(String rawEmailString) {
// need to get to, subject, body and path from string
String[] stringArray = rawEmailString.split("~");
Intent intent = prepareEmail(stringArray[0], stringArray[1], stringArray[2], stringArray[3]);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, "Email"));
}
public Intent prepareEmail(String to, String subject, String body, String pathToAttachment){
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, to);
intent.putExtra(Intent.EXTRA_TEXT, body);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(pathToAttachment));
intent.setType("*/*");
return intent;
}
看起來正確。嘗試一下startActivity(intent),而不是使用選擇器。 – 2011-05-16 18:14:07
感謝羅比,這幫助我朝着正確的方向前進。現在它詢問我是否想用電子郵件或Gmail打開。它會打開罰款,如果我選擇Gmail,但如果我選擇電子郵件,它會顯示一個對話框閱讀「應用程序電子郵件(進程com.google.android.email)意外停止。請再試一次。此語法不支持該標準電子郵件客戶端? – Jeff 2011-05-16 18:23:29
是電子郵件應用程序中設置的電子郵件帳號? – 2011-05-16 18:28:04