【问题标题】:Why does Intent.ACTION_SENDTO includes the app as an option为什么 Intent.ACTION_SENDTO 将应用程序作为选项包含在内
【发布时间】:2019-08-16 15:03:34
【问题描述】:

我的导航抽屉包括一个通过电子邮件联系开发者的选项。为此,我根据文档包含了代码。但是,当单击“联系开发人员”时,显示的选项包括我的应用程序,该应用程序不支持电子邮件。我在网上搜索过这个问题,但没有找到任何相关的东西。如何将用户的选项仅限于电子邮件应用程序? 下面包括 MainActivity.java 中的方法和 AndroidManfiest 中的 intent-filter。

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>

【问题讨论】:

  • 第二个&lt;intent-filter&gt; 表示您的应用确实处理电子邮件。您不需要它就可以发送电子邮件。删除它,您的应用将不再显示为选项。
  • 移除 Intent-filter :
  • 解决了。谢谢。
  • @MikeM。有正确的答案。更正的代码在下面的答案中。

标签: android android-intent


【解决方案1】:

@Mike M. 给出了正确答案。

第二个意图过滤器表示您的应用确实处理电子邮件。您不需要它就可以发送电子邮件。删除它,您的应用程序不应再显示为选项。 – 迈克 M.

我从文档中不必要地复制了 Example intent filter:。将 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>

【讨论】:

    猜你喜欢
    • 2017-01-21
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2014-12-16
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    相关资源
    最近更新 更多