如何使用 Intent Filter 从系统接收电子邮件?

How to receive email from system, using Intent Filter?

我在网上搜索了查询,并在 AndroidManifest.xml 文件中找到了 intent-filter。但是,我仍然无法在我的应用程序中找到如何接收点击的电子邮件 ID。

我的问题

我试过以下功能:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = getIntent();
        String x = intent.getExtras().getString(Intent.EXTRA_EMAIL);
        Toast.makeText(MainActivity.this, x, Toast.LENGTH_SHORT).show();
}

*Toast用于检查是否收到字符串。

但是,toast 显示为空,表明未收到字符串。

我相信电子邮件意图确实是为 sending/composing 电子邮件而设计的,而不是为了将电子邮件中的数据复制到您的应用程序中。看这里:

http://developer.android.com/guide/components/intents-common.html#Email

如果您想获取某人的电子邮件地址,您可能想试试联系人意图:

http://developer.android.com/guide/components/intents-common.html#Contacts

如果某个应用程序通过 ACTION_VIEW Intent 调用您的 activity,则该应用程序无法为您提供电子邮件地址。

如果应用程序通过 ACTION_SENDTO Intent 调用您的 activity,电子邮件地址将在 Uri 中。该 Uri 方案应该是 mailto: (因为您的过滤器将其限制为)。我 认为 你通过 Uri 上的 getSchemeSpecificPart() 获得了地址,虽然我没有尝试过这个。

请注意,当用户单击电子邮件地址时,应用程序不需要启动任何第三方 activity,更不用说您通过 <intent-filter>.