7

オプションを表示する代わりに、デフォルトの電子メールクライアントを開きたい。試しましたが、うまくいきません。誰か助けてもらえますか。

次のコードを使用しました。

  final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);

        emailIntent.setType("text/html");
        emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "My Allergy Journal");       
        emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml("<small>"+sb.toString()+"</small>"));                                 
        startActivity(Intent.createChooser(emailIntent, "Email:"));   

オプションが表示されます

ここに画像の説明を入力してください

しかし、デフォルトの電子メールクライアントを直接開きたいと思います。

ここに画像の説明を入力してください

4

2 に答える 2

15

文字列を次の形式でフレーム化するString URI="mailto:?subject=" + subject + "&body=" + body;

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.parse(URI);
intent.setData(data);
startActivity(intent);

これにより、ユーザーが選択したデフォルトの電子メール プログラムが開きます。

Linkifyこのようにします。必要に応じて、ソース コードを確認してください。

于 2012-09-05T06:11:59.403 に答える
8

次のコードを使用して、Gmail、Facebook、メールなど、必要なインテントを開くことができます。私のコードで使用されているタイプの単純なものは、Gmailを開く場合は「gmail」を渡し、開く場合は「face」を渡します。フェイスブック

Intent intent = new Intent(android.content.Intent.ACTION_SEND); 
intent.setType("text/html");
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(intent, 0);

if (!resInfo.isEmpty())
{
    for (ResolveInfo info : resInfo) 
    {
    if (info.activityInfo.packageName.toLowerCase().contains(type) || info.activityInfo.name.toLowerCase().contains(type)) 
    {
            intent.putExtra(android.content.Intent.EXTRA_TEXT, htmlBody);
            intent.setPackage(info.activityInfo.packageName);   
            startActivity(Intent.createChooser(intent, getResources().getString(R.string.share_send_text)));
        }
} 
于 2012-09-05T06:17:04.397 に答える