我创建了一个短信应用程序,这是我的NEXUS 5(KIT KAT)的默认设置。当我打开我的联系人并单击消息图标时,它会打开我的应用程序,但这个号码还没有出现?
如何从联系人处获取号码?
下面的屏幕截图将有助于理解我想要实现的目标:我在手机上打开人物应用程序,然后点击联系人姓名我得到了下面的屏幕,数字旁边有一个消息图标。如果我点击图标,它会打开我的短信应用程序,它没有获得所需的号码?
如何从联系人处获取号码?
更新
我想出了我应该打电话给创建的意图:
Intent intent = getIntent();
String action = intent.getAction();
行动附带"行动发送" 但是如何检索数字?
更新2:
我试过了:
Uri number = intent.getData();
Log.e("Number","from other App "+number);
日志以下列格式显示:
smsto:%2B11233222321 (Phone number is stored in this format +11233222321)
谢谢!
答案 0 :(得分:1)
在你的短信应用程序中,你应该能够通过ACTION_SENDTO接收意图,你可以使用intent.getData()获取指定的uri。 uri将是短信:23413451365或smsto:23413451365,你可以解析电话号码
答案 1 :(得分:0)
添加您的清单的权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
在你的代码中:
Cursor crs = null;
try {
crs = getApplicationContext().getContentResolver().query(
Phone.CONTENT_URI, null, null, null, null);
int contact = crs.getColumnIndex(Phone._ID);
int name = crs.getColumnIndex(Phone.DISPLAY_NAME);
// this is what you need to get
int number = crs.getColumnIndex(Phone.NUMBER);
crs.moveToFirst();
do {
String contText = crs.getString(contact);
String nameText = crs.getString(name);
// this is what you will get finally as the number
String phoneText = crs.getString(number);
} while (crs.moveToNext());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (crs != null) {
crs.close();
}
}