Как открыть почтовый ящик по умолчанию из кода Android? - PullRequest
15 голосов
/ 11 ноября 2011

Я пытаюсь привязать кнопку к почтовому приложению.Не отправлять почту, а просто открыть почтовый ящик.

Должен ли я сделать это с Intent intent = new Intent(...)?

Если так, что должно быть между ( )?

Ответы [ 8 ]

23 голосов
/ 23 июля 2015

Если цель состоит в том, чтобы открыть почтовое приложение по умолчанию для просмотра входящих сообщений, тогда ключ состоит в том, чтобы добавить категорию намерения и использовать намерение ACTION_MAIN следующим образом:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_APP_EMAIL);
getActivity().startActivity(intent);

https://developer.android.com/reference/android/content/Intent.html#CATEGORY_APP_EMAIL

6 голосов
/ 29 ноября 2011

Да, можно открыть почтовый ящик Android по умолчанию.
Используйте этот код:

Intent intent = getPackageManager().getLaunchIntentForPackage("com.android.email");
startActivity(intent);


Этот код работает, вам нужно настроить свой Androidпочта устройства по умолчанию в первую очередь.Если вы уже настроили свою почту, она работает нормально.В противном случае оно закрывается с помощью NullPointerException.

3 голосов
/ 28 января 2015

Этот код работал для меня. Открывается средство выбора, в котором все приложения электронной почты зарегистрированы на устройстве и сразу во входящие:

Intent emailIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:"));
    PackageManager pm = getPackageManager();

    List<ResolveInfo> resInfo = pm.queryIntentActivities(emailIntent, 0);
    if (resInfo.size() > 0) {
        ResolveInfo ri = resInfo.get(0);
        // First create an intent with only the package name of the first registered email app
        // and build a picked based on it
        Intent intentChooser = pm.getLaunchIntentForPackage(ri.activityInfo.packageName);
        Intent openInChooser =
                Intent.createChooser(intentChooser,
                        getString(R.string.user_reg_email_client_chooser_title));

        // Then create a list of LabeledIntent for the rest of the registered email apps 
        List<LabeledIntent> intentList = new ArrayList<LabeledIntent>();
        for (int i = 1; i < resInfo.size(); i++) {
            // Extract the label and repackage it in a LabeledIntent
            ri = resInfo.get(i);
            String packageName = ri.activityInfo.packageName;
            Intent intent = pm.getLaunchIntentForPackage(packageName);
            intentList.add(new LabeledIntent(intent, packageName, ri.loadLabel(pm), ri.icon));
        }

        LabeledIntent[] extraIntents = intentList.toArray(new LabeledIntent[intentList.size()]);
        // Add the rest of the email apps to the picker selection
        openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents);
        startActivity(openInChooser);
    }
2 голосов
/ 12 ноября 2011
  You can use this but it is for gmail only

  Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);  
  emailIntent.setType("plain/text");
  startActivity(emailIntent); 
0 голосов
/ 05 июля 2019

Адрес электронной почты = новое намерение (Intent.ACTION_MAIN);

email.addCategory (Intent.CATEGORY_APP_EMAIL);startActivity (электронная почта);

0 голосов
/ 04 апреля 2019

Вы можете просто использовать приведенный ниже код, когда нет вложений:

Intent i = new Intent(Intent.ACTION_SENDTO);
i.setData(Uri.parse("mailto:support@mailname.com")); 
i.putExtra(Intent.EXTRA_SUBJECT, "Feedback/Support");
startActivity(Intent.createChooser(emailIntent, "Send feedback"));

Для получения дополнительной информации я рекомендую посетить: https://developer.android.com/guide/components/intents-common.html#Email

0 голосов
/ 29 октября 2012

Вы можете открыть почтовый клиент Android по умолчанию, используя это:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.setClassName("com.android.email", "com.android.email.activity.Welcome");
emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(emailIntent);
0 голосов
/ 11 ноября 2011

К сожалению, это не выглядит многообещающе. Об этом спрашивали раньше

Как запустить почтовый клиент непосредственно в представлении входящих сообщений?

вы можете открыть почтовый клиент в режиме создания, но вы, кажется, уже знаете это.

...