Почему Intent.ACTION_SENDTO включает приложение в качестве опции - PullRequest
1 голос
/ 26 марта 2019

Мой Навигационный ящик содержит возможность связаться с разработчиком по электронной почте.Для этого я включил код в соответствии с документацией.Тем не менее, при нажатии «Связаться с разработчиком» показанные параметры включают мое приложение, которое не поддерживает электронную почту.Я искал в Интернете эту проблему, но не нашел ничего подходящего.Как ограничить параметры пользователя только почтовыми приложениями?Метод из MainActivity.java и intent-filter из AndroidManfiest приведены ниже.

MainActivity.java

    //METHOD: Allow user's to send email to developer
    public void composeEmail() {
        Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
        emailIntent.setData(Uri.parse("mailto:")); // only email apps should handle this
        emailIntent.putExtra(Intent.EXTRA_EMAIL, "contact@developer.com");
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
        if (emailIntent.resolveActivity(getPackageManager()) != null) {
            startActivity(emailIntent);
        }
    }

AndroidManifest.xml

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.Launcher">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <!--Intent filter for sending email-->
            <intent-filter>
                <action android:name="android.intent.action.SENDTO" />
                <data android:scheme="mailto" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

1 Ответ

0 голосов
/ 26 марта 2019

@ Майк М. получил правильный ответ.

Этот второй фильтр намерений говорит, что ваше приложение обрабатывает электронную почту.Вам не нужно это, чтобы иметь возможность просто отправлять электронную почту.Удалите это, и ваше приложение больше не будет отображаться как опция.- Майк М.

Я излишне скопировал фильтр намерений Пример: из документации.Редактирование файла AndroidManifest.xml для приведенного ниже кода решило проблему.

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme.Launcher">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...