2012-12-12 39 views
10

Có cách nào để mở ứng dụng email theo chương trình mà không cần phải gửi tin nhắn không? Tôi chỉ muốn ứng dụng cho phép người dùng mở ứng dụng email của mình cho mục đích kiểm tra email :)Mở ứng dụng email khách thông qua Intent (nhưng không gửi tin nhắn)

Intent intent = new Intent(Intent.ACTION_SEND); 
    intent.setType("message/rfc822"); 
    startActivity(Intent.createChooser(intent, "")); 

Mã này hoạt động nhưng buộc người dùng phải gửi thư mới.

Trả lời

1

Tôi nghĩ rằng bạn nên thay thế Intent.ACTION_SEND-Intent.ACTION_VIEW,
tôi chắc chắn điều này sẽ làm việc như thế này sẽ nhắc nhở với danh sách các ứng dụng có hỗ trợ MIME loại "message/rfc822" nên nó sẽ bao gồm ứng dụng email mặc định trong thiết bị của bạn ngoài ứng dụng gmail.

Làm thế nào về mã này:

final Intent emailLauncher = new Intent(Intent.ACTION_VIEW); 
emailLauncher.setType("message/rfc822"); 
try{ 
     startActivity(emailLauncher); 
}catch(ActivityNotFoundException e){ 

} 
19
Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_APP_EMAIL); 
    startActivity(intent); 
    startActivity(Intent.createChooser(intent, getString(R.string.ChoseEmailClient))); 

Loại đó hoạt động. Nhưng nó opend Gmail đối với tôi, thậm chí kể từ khi tôi có khách hàng email khác

+1

nên sử dụng thử bắt đầu hoạt động để tránh ngoại lệ như không có ứng dụng email. – ademar111190

+0

Bạn đã bao giờ quản lý để cho phép người chọn hoạt động? Nó mở gmail cho tôi và tôi đã cài đặt một ứng dụng email khác (myMail). – user1354603

+0

Bạn có thể bỏ qua dòng cuối cùng. Gọi 'startActivity (intent);' ngầm mở một trình chọn (trừ khi mặc định được thiết lập), vì vậy 'createChooser' không cần thiết. –

4

Mã này sẽ hiển thị một hộp thoại với một danh sách các khách hàng email. Nhấp vào một ứng dụng sẽ khởi chạy ứng dụng:

try { 
    List<String> emailClientNames = new ArrayList<String>(); 
    final List<String> emailClientPackageNames = new ArrayList<String>(); 
    // finding list of email clients that support send email 
    Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
     "mailto", "[email protected]", null)); 
    PackageManager pkgManager = AppController.getContext().getPackageManager(); 
    List<ResolveInfo> packages = pkgManager.queryIntentActivities(intent, 0); 
    if (!packages.isEmpty()) { 
     for (ResolveInfo resolveInfo : packages) { 
      // finding the package name 
      String packageName = resolveInfo.activityInfo.packageName; 
      emailClientNames.add(resolveInfo.loadLabel(getPackageManager()).toString()); 
      emailClientPackageNames.add(packageName); 
     } 
     // a selection dialog for the email clients 
     AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this); 
     builder.setTitle("Select email client"); 
     builder.setItems(emailClientNames.toArray(new String[]{}), new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      // on click we launch the right package 
      Intent intent = getPackageManager().getLaunchIntentForPackage(emailClientPackageNames.get(which)); 
       startActivity(intent); 
      } 
     }); 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    } 
} catch (ActivityNotFoundException e) { 
    // Show error message 
} 
+0

Điều này phù hợp với tôi! Cảm ơn nhiều. –

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