如何从联系人到我的短信应用程序获取电话号码

时间:2014-04-25 07:00:14

标签: android

我创建了一个短信应用程序,这是我的NEXUS 5(KIT KAT)的默认设置。当我打开我的联系人并单击消息图标时,它会打开我的应用程序,但这个号码还没有出现?

如何从联系人处获取号码?

下面的屏幕截图将有助于理解我想要实现的目标:我在手机上打开人物应用程序,然后点击联系人姓名我得到了下面的屏幕,数字旁边有一个消息图标。如果我点击图标,它会打开我的短信应用程序,它没有获得所需的号码?

如何从联系人处获取号码?

enter image description here

更新

我想出了我应该打电话给创建的意图:

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)

谢谢!

2 个答案:

答案 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();
            }
        }