2012-12-12 3 views
10

강제로 메시지를 보낼 필요없이 프로그래밍 방식으로 전자 메일 클라이언트를 열 수 있습니까? 난 그냥 사용자가 이메일 확인 목적을 위해 자신의 이메일 클라이언트를 열 수 있도록 응용 프로그램을 원한다 :)인 텐트를 통해 전자 메일 클라이언트 열기 (메시지는 보내지 않음)

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

이 코드는 작동하지만 사용자가 새 메시지를 보내도록합니다.

답변

1

나는 당신이 대체해야한다고 생각 Intent.ACTION_SEND-Intent.ACTION_VIEW,
내가이는 것 때문에 MIME 타입 "message/rfc822"을 지원하는 응용 프로그램의 목록을 묻는 메시지가 표시됩니다으로 문제가 해결 되리라 확신합니다 Gmail 앱이 아닌 기기에 기본 이메일 클라이언트를 포함하십시오.

방법이 코드에 대해 :이 코드는 이메일 클라이언트 목록이있는 대화 상자가 표시됩니다

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))); 

다소 효과가 있습니다. 그러나 나는 다른 이메일 클라이언트

을 가지고도 있기 때문에, 나를 위해 Gmail을에 opend
+1

은 전자 메일 응용 프로그램이없는 것과 같은 예외를 피하기 위해 시작 활동에 시도 잡기를 사용해야합니다. – ademar111190

+0

선택기가 작동하도록 관리 했습니까? 나를 위해 Gmail을 열고 다른 이메일 클라이언트가 설치되어 있습니다 (myMail). – user1354603

+0

마지막 줄을 생략 할 수 있습니다. 'startActivity (intent);를 호출하면 (기본값이 설정되어 있지 않는 한) 선택자가 암시 적으로 열리므로'createChooser'는 필수가 아닙니다. –

4

. 하나를 클릭하면 응용 프로그램이 실행됩니다.

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

이 작품은 나를 위해! 고맙습니다. –

관련 문제