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

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

最佳答案

通常,对于Android中的常见任务,您可以发送一个通用的Intent,其他应用程序可以在该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的 native 共享对话框,用户可以在该对话框上选择自己想共享的方式。

专门针对电子邮件,您可以执行以下操作:
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);

您需要确定要在应用程序中执行的操作,然后确定如何执行每个操作。

您可以在此处找到更多数据:
  • Android content sharing
  • Android intents-在各种 Intent Action 下
  • 10-07 16:23
    查看更多