2011-04-26 5 views
2

次のコードを使用しています。このコードをデバイスで実行すると問題が発生します。これは、メールを送信するための3つのオプションを持つDailogboxを開きます。 "POP、電子メール、Gmail"など ゲームをクリックすると、作曲家が表示されます。 私はGamilメールの作曲家を直接に見せたいだけです。オプションを選択するためのダイルボックスを表示する代わりに。私を助けてください。GmailのメールコンポーザーをAndroidで直接開く方法は?

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
emailIntent.setType("text/html"); 

String subject = "My Subject"; 

emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); 

emailIntent.setType("text/html"); 

String title = "<p align='center'>" + storyTitle + "<br/>" + storyPubDate + "</p>"; 

String data = "<p> Sent From ABC APP Sent from my Android </p>"; 

      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(title + data)); 
startActivity(Intent.createChooser(emailIntent, "Email:")); 

答えて

0

このポップアップをプログラマチックにバイパスすることはできません。ユーザーが機能にアクセスしようとしたときにGmailが設定されていないとどうなりますか?

バイパスしたいのであれば、他のメールクライアントをすべて削除して、メールを送受信できるのはGmailだけです。そうすれば、ポップアップは表示されません。

+0

はい、Gmailが設定されていない場合はありません。しかし、私のデバイスから他のすべてのクライアントを削除するにはどうすればよいですか? – Arslan

5

チューザの必要性については不明です。これを試してみてください、あなたのAndroidデバイスで複数のメール作曲を持っていて、ちょうどあなたの要求のためのGamil作曲開始したい場合はこれが

  final Intent intent = new Intent(Intent.ACTION_SEND); 
      intent.setType("plain/text"); 
      intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
      intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
      intent.putExtra(Intent.EXTRA_TEXT, content); 
      activity.startActivity(intent); 
+2

setTypeはplain/textではなくtext/plainでなければならないことに注意してください(そうしないと、ActivityNotFoundExceptionが返されます)。ヒントをありがとう! – Andrew

0

...私のアプリケーションのいずれかからである、あなたは

emailIntent.setClassName("xxxgamil composer package name xxx", "xxxgmail composer class name xxx"); 
    startActivity(emailIntent); 
+0

コードが見つかりました。あなたのコードのように見える 意図インテント=新しいインテント(android.content.Intent.ACTION_SEND); intent.setType( "text/plain"); 最終パッケージマネージャpm = getPackageManager(); finalリスト matches = pm.queryIntentActivities(intent、0); ResolveInfo best = null; (最終的なResolveInfo情報:一致) if(info.activityInfo.packageName.endsWith( "。gm")|| info.activityInfo.name.toLowerCase()。( "gmail")が含まれています)best = info; if(best!= null) intent.setClassName(best.activityInfo.packageName、best.activityInfo.name); startActivity(インテント); – Arslan

+0

はい....そしてMojoのリンクも便利です。 –

+0

完了。しかし、メールを送った後。もう一度ダイアログボックスに表示されます。もうそれを開きたくないのですか? 提案がありますか? – Arslan

15

に持っています1、パーフェクト

public void shareToGMail(String[] email, String subject, String content) { 
    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.putExtra(Intent.EXTRA_EMAIL, email); 
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); 
    emailIntent.setType("text/plain"); 
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, content); 
    final PackageManager pm = activity.getPackageManager(); 
    final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0); 
    ResolveInfo best = null; 
    for(final ResolveInfo info : matches) 
     if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail")) 
      best = info; 
    if (best != null) 
     emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name); 
    activity.startActivity(emailIntent); 
} 
+0

その答えは私のために働く。 –

+0

ありがとうございます1+。それは私のために働いています。 – Ninja

2

このコード

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
"mailto", "[email protected]", null)); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "This is my subject text"); 
context.startActivity(Intent.createChooser(emailIntent, null)); 
012をお試しください

Ref: http://developer.android.com/reference/android/content/Intent.html#ACTION_SENDTO

+0

ベストソリューションはこちら – Guy

+0

liink unavailable – therealprashant

0

以下のコードは私のために働いた。これにより、電子メールクライアントが検索され、送信済みの値が事前設定された新しい電子メールコンポーザーが直接起動されます。電子メールクライアントが存在しない場合は、クラッシュを避けるためにキャッチする必要があります。

このソリューションについての良い考えは、バックプレスでは、電子メールの意図が始まったアプリ画面に直接移動することです。

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:")); 
    intent.putExtra(Intent.EXTRA_SUBJECT, "Your Subject"); 
    intent.putExtra(Intent.EXTRA_TEXT, "The message"); 
    try { 
     startActivity(intent); 
    } catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(this, "Mail account not configured", Toast.LENGHT_SHORT).show(); 
    } 

ありがとうございます!

関連する問題