从联系人视图,如何发送联系人号码到我的短信应用程序,发送短信给它

时间:2017-03-08 16:35:52

标签: android sms contact

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

1 个答案:

答案 0 :(得分:0)

从“通讯录”中获取SENDTO时,该号码(可能是多个号码)将作为数据Uri附加到Intent启动Activity的{​​{1}}。初始化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来获取个别号码。