从联系人视图,如何将联系人号码发送到我的短信应用程序,以向其发送短信

From a contact view, how to send a contact number to my sms app, to send an sms to it

我构建了一个短信应用程序,它支持短信活动的所有功能(仅短信)。但是现在,我的问题是,当我的应用程序已经是短信的默认应用程序时,当我想通过我的应用程序向它发送短信时,我无法从联系人视图中获取号码。这里有一些图片来解释我想要实现的目标。! When I click to the sms icon,my app is opened by I can't get the number 我没有任何代码来处理 activity 中的操作 SEND/SENDTO,但我刚刚在清单文件中提到了 intent-filter:action.SEND, action.SENDTO,因为如果我们想让该应用程序可选择为默认短信应用程序,则必须这样做。我以为联系人视图中的号码是从 onActivityResult 访问的,但它似乎不起作用,请帮助!

从通讯录中获取 SENDTO 时,该号码(可能是多个号码)将作为数据 Uri 附加到启动您的 ActivityIntent 上。初始化您的 Activity 时,检查适当的操作,并在必要时检索号码。

举个基本的例子:

if (Intent.ACTION_SENDTO.equals(getIntent().getAction())) {
    Uri data = getIntent().getData();
    String numbers = data.getSchemeSpecificPart();
}

为了更稳固的实施,删除可能在 Uri 上的任何其他参数并替换任何非拉丁数字是明智的。

if (Intent.ACTION_SENDTO.equals(getIntent().getAction())) {
    Uri data = getIntent().getData();
    String numbers = data.getSchemeSpecificPart();

    // Strip any extraneous parameters
    int i = numbers.indexOf('?');
    numbers = (i == -1) ? numbers : numbers.substring(0, i);

    // Replace non-Latin digits, and ensure our delimiter is something we expect
    numbers = PhoneNumberUtils.replaceUnicodeDigits(numbers).replace(",", ";");
    ...
}

如果收到多个号码,它们应该以逗号或分号分隔 String。上面用分号替换了逗号,所以我们以后不需要担心使用的是哪个。然后,您可以简单地 split() numbers 来获取个人号码,如果您收到了多个号码。