繁体   English   中英

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

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

我已经构建了一个短信应用程序,它支持短信活动的所有功能(仅限短信)。 但现在,我的问题是,当我的应用程序已经是短信的默认应用程序时,当我想通过我的应用程序发送短信时,我无法从联系人视图中获取该数字。 这里有图像来解释我想要实现的目标。 当我点击短信图标时,我的应用程序被打开,我无法获取号码我没有任何代码来处理我的活动中的动作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以获得单个数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM