2012-12-12 10 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をオープンしまし
+1

は、電子メールアプリケーションを持たないなどの例外を避けるために、開始アクティビティでtry catchを使用する必要があります。 – 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

これは私のために働く!どうもありがとうございました。 –

関連する問題