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

时间:2016-05-09 15:29:45

标签: android android-intent whatsapp

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

我的问题

  • 假设我在WhatsApp聊天框中收到包含电子邮件ID(xyz@test.com)的消息。
  • 点击电子邮件ID(xyz@test.com),我希望我的应用程序打开。 (图中,使用Intent-filter)
  • 打开我的申请后,我希望电子邮件ID(xyz@test.com)自动复制到我活动的EditText中。

我尝试过以下功能:

@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显示为空,表示没有收到字符串。

2 个答案:

答案 0 :(得分:1)

我认为电子邮件意图真的是为发送/撰写电子邮件而设计的,而不是用于将电子邮件中的数据复制到您的应用程序中。见这里:

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

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

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

答案 1 :(得分:0)

如果某个应用通过ACTION_VIEW Intent调用您的活动,则该应用没有任何文档记录方式可以为您提供电子邮件地址。

如果某个应用通过ACTION_SENDTO Intent调用您的活动,则该电子邮件地址将位于UriUri方案应为mailto:(就像您的过滤器限制它一样)。我认为您通过getSchemeSpecificPart()上的Uri获取了地址,但我还没试过。

请注意,当用户点击电子邮件地址时,不要求应用启动任何第三方活动,更不用说通过<intent-filter>设置的两个活动中的一个。