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

Android 从联系人视图,如何将联系人号码发送到我的sms应用程序,以及如何向其发送sms,android,sms,contact,Android,Sms,Contact,我已经建立了一个短信应用程序,它支持短信活动的所有功能(仅短信)。但现在,我的问题是,当我的应用程序已经是短信的默认应用程序时,当我想通过我的应用程序向联系人视图发送短信时,我无法从联系人视图中获取号码。这里有一些图片来解释我想要实现的目标。! 我没有任何代码来处理活动中的操作SEND/SENDTO,但我只是在清单文件中提到了intent过滤器:action.SEND,action.SENDTO,因为如果我们想将应用程序作为默认sms应用程序进行选择,这是必须的。我以为联系人视图中的号码是从on

我已经建立了一个短信应用程序,它支持短信活动的所有功能(仅短信)。但现在,我的问题是,当我的应用程序已经是短信的默认应用程序时,当我想通过我的应用程序向联系人视图发送短信时,我无法从联系人视图中获取号码。这里有一些图片来解释我想要实现的目标。!
我没有任何代码来处理活动中的操作SEND/SENDTO,但我只是在清单文件中提到了intent过滤器:action.SEND,action.SENDTO,因为如果我们想将应用程序作为默认sms应用程序进行选择,这是必须的。我以为联系人视图中的号码是从onActivityResult访问的,但它似乎不起作用,请帮助

当从联系人处获取一个
SENDTO
时,该号码(可能有多个号码)将作为启动
活动的
意图上的
Uri
数据附加。初始化
活动时
,检查相应的操作,必要时检索号码

举一个基本的例子:

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(",", ";");
    ...
}

如果收到多个数字,则它们应以逗号或分号分隔,并以
字符串
分隔。上面用分号替换逗号,所以我们以后不必担心使用了哪个。然后,如果您收到了多个号码,您可以简单地
split()
这些号码
来获取单个号码。

当从联系人处获取一个
发送到
时,该号码(可能是多个号码)将作为启动
活动的
意图
上的数据
Uri
附加。初始化
活动时
,检查相应的操作,必要时检索号码

举一个基本的例子:

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(",", ";");
    ...
}

如果收到多个数字,则它们应以逗号或分号分隔,并以
字符串
分隔。上面用分号替换逗号,所以我们以后不必担心使用了哪个。然后,如果您收到了多个编号,您可以简单地
split(),并准确解释您在检索电话号码/联系人ID时遇到的问题。好的,我更新了我的问题。正如我在问题中所解释的,我没有任何代码来处理联系人的数据,您能给我推荐一个或只是一个有用的链接吗?是的,该号码将附加到用于启动您的
活动的
意图
。onActivityResult()的
方法对此不起作用。请给我一分钟,我会给出一个答案。非常感谢,所以我正在等待您的问题,请您为您的
活动
提供代码,该活动处理
发送
/
发送到
操作,并准确解释您在检索电话号码/联系人ID时遇到的问题。好的,我更新了我的问题。正如我在问题中所解释的,我没有任何代码来处理联系人的数据,您能给我推荐一个或只是一个有用的链接吗?是的,该号码将附加到用于启动您的
活动的
意图
。onActivityResult()的
方法对此不起作用。给我一分钟,我会整理一个答案。非常感谢,所以我等了很久了。我会试试这个,然后告诉你结果。这确实是我需要的那种代码,没有问题。很乐意帮忙。欢迎来到Stack Overflow,顺便说一句。干杯!谢谢。我会试试这个,然后告诉你结果。这确实是我需要的那种代码,没有问题。很乐意帮忙。欢迎来到Stack Overflow,顺便说一句。干杯!