2012-04-24 56 views
7

mỗi khi tôi tạo một hành động để gửi email từ ứng dụng của tôi, nó sẽ nhắc nhiều tùy chọn bao gồm ứng dụng khách ...ACTION_SEND buộc gửi bằng email

Có cách nào để buộc chỉ gửi qua ứng dụng email không?

Mã để gửi email

String rec[] = { owner.email }; 
i = new Intent(Intent.ACTION_SEND); 
i.setType("text/plain"); 
i.putExtra(android.content.Intent.EXTRA_EMAIL, rec); 
i.putExtra(android.content.Intent.EXTRA_SUBJECT, "RE: " + desc); 
i.putExtra(android.content.Intent.EXTRA_TEXT, 
     "\n\n\nSent from Mojo for Android"); 
startActivity(i); 

Ảnh chụp màn hình cho những gì xảy ra khi tôi khởi động này screenshot

+0

Đọc http://stackoverflow.com/a/5802670/599993 – jzafrilla

Trả lời

24

Cố gắng setType message/rfc822 thay vì text/plain

+1

nó cho thấy bluetooth cũng với gmail ... làm thế nào để tránh điều đó? – RAJESH

+2

Có cách nào thu hẹp nó xuống để buộc nó gửi bằng Gmail không? –

+0

nếu tôi phải sử dụng setType cho loại tệp đính kèm (tệp) của tôi? +1 nếu tôi chỉ cần gửi văn bản –

4

Tôi nghĩ bạn nên thay đổi số setType đến

i.setType("message/rfc822") ; 
+0

Có, điều này được mặc định là mở Gmail trong ứng dụng của tôi. Cảm ơn! –

+0

nó sẽ mở ra nhiều ứng dụng hơn, chỉ là email ..., tại sao không phải 'text/html'? –

4
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("text/html"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, 
new String[] { "[email protected]" }); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
        "Subject of the Mail"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
          "This is my sample Mail"); 
emailIntent.setType("vnd.android.cursor.dir/email"); 
startActivity(Intent.createChooser(emailIntent, "Email:")); 

khác sử dụng này nó sẽ chỉ hiển thị các khách hàng mail,

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); 
emailIntent.setType("message/rfc822"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, 
new String[] { "[email protected]" }); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
        "Subject of the Mail"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
          "This is my sample Mail"); 
//emailIntent.setType("vnd.android.cursor.dir/email"); 
startActivity(Intent.createChooser(emailIntent, "Email:")); 
0

Chừng nào bạn đang sử dụng ACTION_SEND với loại text/plain, nó sẽ hiển thị tất cả các tùy chọn hợp lệ. Tuy nhiên, nếu bạn muốn, bạn có thể thiết kế cửa sổ hộp thoại của riêng bạn chỉ hiển thị Gmail hoặc ứng dụng thư khách khác bằng cách thực hiện lọc theo chương trình.

BTW, tại sao bạn thậm chí cần cửa sổ này khi bạn chỉ muốn sử dụng Gmail?

+0

nếu tôi gọi lại chính xác, bạn không thể ép Gmail làm ứng dụng email mặc định – thepoosh

+0

, tôi yêu cầu bạn hiển thị Gmail trong cửa sổ hộp thoại được thiết kế riêng của bạn – waqaslam

+1

Tôi sẽ không muốn buộc người dùng của mình sử dụng ứng dụng email cụ thể . nó không có vẻ như là một ý tưởng hay. – thepoosh

-1
String rec[] = { owner.email }; 
i = new Intent(Intent.ACTION_SEND); 
i.setType("message/rfc822") ; 
i.putExtra(android.content.Intent.EXTRA_EMAIL, rec); 
i.putExtra(android.content.Intent.EXTRA_SUBJECT, "RE: " + desc); 
i.putExtra(android.content.Intent.EXTRA_TEXT, 
     "\n\n\nSent from Mojo for Android"); 
startActivity(i); 

thử này; :::

0
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("mailto:?to=email&subject=hello&body=hello%20world")); 
startActivity(Intent.createChooser(intent, "Send via...")); 

bạn có thể thử này :::::

0
Intent.setType("plain/text"); 

Lúc đầu khi tôi phát hiện tôi này ngay lập tức mặc dù nó là một sai lầm và nó có nghĩa là text/plain, nhưng đây thực sự là cách chính xác để chỉ hiển thị các ứng dụng khách E-mail trong danh sách ứng dụng.

Hãy thử và tự mình xem.

-1

Đặt Intent.setType thành: Intent.setType ("plain/text") là cách chính xác để buộc android.content.Intent.ACTION_SEND để hiển thị ứng dụng email khách. Một giải pháp hoàn hảo và đơn giản. Cảm ơn!

+0

đây không chỉ là spam mà là không chính xác. như bạn có thể thấy từ câu hỏi của tôi – thepoosh