0

我需要一种方法来捕获 Android 设备的电话号码,以便将其发送回我的 web api 进行处理。

我已经阅读了有关getLine1Number函数的问题和不一致之处,所以我的问题是,是否有任何程序替代方案 或者它是检索设备电话号码的唯一可用方法?getLine1Number

需要明确的是,我不是在寻找 UUID,这是一个手机应用程序,我需要用户电话号码来进行数据关联。

4

2 回答 2

1

这是获取电话号码的代码片段:

....
private final static String PHONE = "phone";
...

Map<String, String> contactDataMap = new HashMap<String, String>();

    ContentResolver cr = context.getContentResolver();

    Uri contactData = data.getData();
    //Cursor cursor =  managedQuery(contactData, null, null, null, null);
    Cursor cursor =  cr.query(contactData, null, null, null, null);
    cursor.moveToFirst();
    String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
    String id = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

    contactDataMap.put(NAME, (name != null)?name:"");


    if (Integer.parseInt(cursor.getString(
            cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
        Cursor pCur = cr.query(
                                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                                null, 
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
                                new String[]{id},
                                null);

        while (pCur.moveToNext()) {
            String number = pCur.getString(pCur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER));

            contactDataMap.put(PHONE, (number != null)?number:"");
            break; // ? we want only 1 value
        } 
        pCur.close();
    }

通过这种方式,您可以获取电话号码。确保您有权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />
于 2013-08-19T20:46:47.233 回答
1

您可以为此使用 getLine1Number ()。它将返回第 1 行的电话号码字符串,例如 GSM 电话的 MSISDN。如果不可用,则返回 null。

这是一个例子:

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = tm.getLine1Number();

它需要在 Androidmanifest.xml 文件中添加 READ_PHONE_STATE 权限。

于 2013-08-19T21:09:42.020 回答