6

我正在编写一个 Android 应用程序。我想调用其他应用程序来执行某些操作(发送电子邮件等)。我如何知道为意图设置哪个操作和类别?我应该查看其他应用程序的意图过滤器吗?如果该应用程序不是开源的怎么办?

另外,对于数据或额外属性,我不知道第 3 方应用程序将如何处理我的意图,所以我不知道如何设置属性。例如,我想要一个字符串作为电子邮件的标题,一个字符串作为电子邮件的内容,另一个字符串作为收件人,以及一张图片作为附件。我可以在意图中包含所有这些信息吗?如果第 3 方应用程序不提供任何处理它的功能怎么办?

4

2 回答 2

6

通常,对于 Android 中的常见任务,您会发送一个通用 Intent,其他应用程序可以在该 Intent 上注册。
例如,要分享一些文本,您将创建如下意图:

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));

将提示 android 的本机共享对话框,用户可以在该对话框中选择他想如何共享它。

特别是对于电子邮件,您会执行以下操作:

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
                  "mailto","email@domain.com", null));
intent.putExtra(Intent.EXTRA_SUBJECT, "This is my email subject");
startActivity(Intent.createChooser(intent, "Email"));


其他示例可能是启动默认短信应用程序:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);         
sendIntent.setData(Uri.parse("sms:"));
sendIntent.putExtra("sms_body", getMessageBody());

或者打开手机的拨号器:

Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:"+number));
        startActivity(intent);

你需要弄清楚你想在你的应用程序中实现哪些操作,然后弄清楚如何实现它们中的每一个。

您可以在此处找到更多数据:

于 2013-04-03T15:33:07.773 回答
1

尝试在意图中使用类别和操作。

Intent mailIntent = new Intent(Intent.ACTION_SEND);
mailIntent.setType("text/plain");
mailIntent.putExtra(Intent.EXTRA_SUBJECT, "Reporting mail");
mailIntent.putExtra(Intent.EXTRA_TEXT, "Some message");
mailIntent.putExtra(Intent.EXTRA_EMAIL, "xxx@yyy.com");
startActivity(mailIntent);

这是发送电子邮件的示例。有关详细信息,请参阅http://developer.android.com/guide/components/intents-common.html

于 2014-12-10T06:24:13.970 回答