我使用隐式电子邮件意图创建了一个电子邮件应用程序 Mycode
我知道,我需要在清单文件中添加FILTER。它使用了这些过滤器。
<intent-filter>
<action android:name="android.intent.action.SENDTO"></action>
<data android:mimeType="*/*"></data>
<data android:scheme="mailto" />
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
问题: 我的问题是,当我删除这些过滤器时,它仍然运行良好。我无法理解为什么没有过滤器信息就可以正常工作。 Android文档说
要通过此过滤器,Intent中指定的操作必须与一个匹配 过滤器中列出的操作。如果过滤器未列出任何内容 动作,没有意图可以匹配,因此所有
enter code here
意图都无法通过测试。但是,如果Intent没有指定 操作,只要过滤器包含至少一个,它就可以通过测试 行动
答案 0 :(得分:0)
链接图像中的代码与此类似:
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setType("text/plain");
intent.setData(Uri.parse("mailto:ejemplo@ejemplo.com"));
intent.putExtra(Intent.EXTRA_SUBJECT, "asunto de prueba");
intent.putExtra(Intent.EXTRA_TEXT, "probando el envio");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"suppport@ourcompany.com"});
startActivity(intent);
之所以起作用,是因为Intent.ACTION_SENDTO是Android设备上许多应用程序支持的通用“非显式”意图。例如,这些应用程序(例如GMail)已经包含带有意图过滤器的活动,该意图过滤器可以处理android.intent.action.SENDTO
动作。
如果您正在编写电子邮件应用程序或其他能够发送消息的应用程序,则您的应用程序也应考虑支持此意图操作。
如果另一方面,您的目标只是允许用户发送电子邮件,那么这是不必要的,因为Android设备上已经有许多能够发送电子邮件的应用程序。此外,用户很可能更愿意为任务选择自己的电子邮件应用。