Есть ли способ получить текущее имя пользователя и номер мобильного телефона в Android?

Есть ли способ получить текущее имя пользователя и номер мобильного телефона в Android?

Я хочу получить информацию о пользователе текущего номера телефона и имени пользователя в android.

У любого тела есть код или идея, помогите мне .. Спасибо ..


person chimbu    schedule 21.08.2013    source источник


Ответы (3)


Используйте эту функцию, чтобы получить информацию о владельце

 public String [] OwnerInfo() {

            final AccountManager manager = AccountManager.get(context);
            final Account[] accounts = manager.getAccountsByType("com.google");
            try{
            if (accounts[0].name != null) {


                //get the account_name
                ownerinfo[0] = accounts[0].name;

                ContentResolver cr = context.getContentResolver();
                Cursor emailCur = cr.query(
                        ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                        ContactsContract.CommonDataKinds.Email.DATA + " = ?",
                        new String[] { ownerinfo[0] }, null);
                while (emailCur.moveToNext()) {
                    //get the id
                    ownerinfo[1] = emailCur
                            .getString(emailCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Email.CONTACT_ID));
                  //get the Email
                    ownerinfo[2] = emailCur
                            .getString(emailCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                    String newName = emailCur
                            .getString(emailCur
                                    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                    if (ownerinfo[3] == null || newName.length() > ownerinfo[3].length())
                         //get the Name
                         ownerinfo[3] = newName;

                    Log.v("Got contacts", "ID " + ownerinfo[1] + " Email : " + ownerinfo[2]
                            + " Name : " + ownerinfo[3]);
                }

                emailCur.close();
             // get the phone number
                final TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
                ownerinfo[4] = tm.getLine1Number();

                if(ownerinfo[4]==null)
                {
                if (ownerinfo[1] != null) {

                    // get the phone number
                    Cursor pCur = cr.query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                    + " = ?", new String[] { ownerinfo[1] }, null);
                    while (pCur.moveToNext()) {
                        ownerinfo[4] = pCur
                                .getString(pCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        Log.v("Got contacts", "phone" + ownerinfo[4]);
                    }
                    pCur.close();
                }
            }
            }
            }catch(ArrayIndexOutOfBoundsException e){
                Log.d("OwnerInfo","ArrayIndexOutOfBoundsException due to email account not available in your device");              
            }
            return ownerinfo;

        }
person Community    schedule 03.10.2013

Вы можете использовать TelephonyManager для получения номера мобильного телефона.

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

А также добавьте разрешение в свой файл манифеста:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>    

Для этого это поможет вам ..

final AccountManager manager = AccountManager.get(this);
final Account[] accounts = manager.getAccountsByType("com.google");
final int size = accounts.length;
String[] names = new String[size];
for (int i = 0; i < size; i++) {
  names[i] = accounts[i].name;
} 
person Piyush    schedule 21.08.2013

Вы можете использовать TelephonyManager для этого:

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

Также см. этот ответ.

Об этом говорится в документации для getLine1Number(). метод вернет null, если номер «недоступен», но не говорит, когда номер может быть недоступен.

Вам нужно добавить разрешение в файл манифеста:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>    

Имя владельца см. это.

person Hardik Joshi    schedule 21.08.2013
comment
несколько раз его обратный нулевой клапан. - person chimbu; 21.08.2013
comment
@user2042347 user2042347 да, иногда он возвращает null. - person Hardik Joshi; 21.08.2013
comment
k, а как насчет имени владельца телефона? - person chimbu; 21.08.2013
comment
@user2042347 stackoverflow. ком/вопросы/6222384/ - person Hardik Joshi; 21.08.2013