我正在编写Android应用程序。我想调用其他应用程序来执行某些操作(发送电子邮件等)。我如何知道要为意图设置哪个操作和类别?我应该查看其他应用程序的intent过滤器吗?如果该应用程序不是开源的怎么办?
另外,对于数据或额外属性,我不知道第三方应用程序将如何处理我的意图,所以我不知道如何设置属性。例如,我想要一个字符串作为电子邮件的标题,一个字符串作为电子邮件的内容,另一个字符串作为收件人,一个图片作为附件。我可以在意图中包含所有这些信息吗?如果第三方应用程序不提供任何处理它的功能怎么办?
答案 0 :(得分:5)
通常,对于Android中的常见任务,您可以发送一个通用的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);
您需要确定要在应用中实施的操作,然后找出如何实施这些操作。
您可以在此处找到更多数据:
答案 1 :(得分: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