2009-11-20 27 views
12

Tôi đã thử mã này mà tôi tìm thấy ở đây:Làm cách nào để khởi chạy ứng dụng email có trường "tới" được điền trước?

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "[email protected]", null)); startActivity(intent); 

Nhưng tôi nhận được một tin nhắn trên màn hình mà đọc "Hành động không được hỗ trợ". Bất kỳ ý tưởng làm thế nào để có được điều này làm việc?

Cảm ơn!

Trả lời

27

Hãy thử snippet này:

/* Create the Intent */ 
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 

/* Fill it with Data */ 
emailIntent.setType("plain/text"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Text"); 

/* Send it off to the Activity-Chooser */ 
context.startActivity(Intent.createChooser(emailIntent, "Send mail...")); 

mảnh chính: sử dụng EXTRA_EMAIL cho địa chỉ của bạn và sử dụng createChooser() trong trường hợp người dùng có nhiều hơn một ứng dụng email được cấu hình.

+3

Cảm ơn, đã làm việc :) Tôi đã thử một cái gì đó như thế ban đầu nhưng nó chỉ kéo lên một số màn hình nhắn tin và không phải là ứng dụng email. Tôi nghĩ rằng đó là bởi vì, vào thời điểm đó, tôi không có một tài khoản email được thiết lập trong trình mô phỏng? – scuba

+0

Bạn đã sử dụng từ khóa cuối cùng nào? Điều đó có dẫn đến một số loại tối ưu hóa mà tôi không biết? – Scott

+0

Tôi không viết đoạn mã. Cá nhân, tôi có lẽ sẽ không sử dụng từ khóa cuối cùng ở đó. – CommonsWare

3

Bạn có thử

Intent intent = new Intent(
    Intent.ACTION_SENDTO, 
    Uri.parse("mailto:[email protected]") 
); 
startActivity(intent); 
+0

Đã chụp một cảnh, vẫn nhận được thông báo: Hành động không được hỗ trợ Hành động này hiện không được hỗ trợ. Trong bong bóng giống như bánh mì nướng. Tôi có cần thiết lập nội dung nào đó trong tệp kê khai để ứng dụng của tôi sử dụng ứng dụng này không? – scuba

1

Tôi nghĩ rằng các vấn đề thực sự ở đây là bạn đang chạy trên trình mô phỏng chính thức và ý định của bạn không phù hợp với bất kỳ thứ gì.

Từ thử nghiệm của tôi, đây là sự cố xảy ra khi URI của mục đích (từ setData()) không khớp với bất kỳ thứ gì và bạn đang chạy trên một trong những trình giả lập Android chính thức. Điều này dường như không xảy ra trên các thiết bị thực, vì vậy nó không phải là một vấn đề thực tế.

Bạn có thể sử dụng mã này để phát hiện khi điều này sẽ xảy ra trước khi bạn khởi động mục đích:

ComponentName emailApp = intent.resolveActivity(getPackageManager()); 
ComponentName unsupportedAction = ComponentName.unflattenFromString("com.android.fallback/.Fallback"); 
boolean hasEmailApp = emailApp != null && !emailApp.equals(unsupportedAction); 

(. Tên của hoạt động cho thấy phương pháp "không được hỗ trợ hành động" hành động là com.android.fallback.FallbackActivity)

Các vấn đề liên quan