Question

get owner user name and phone number using account manager in android

here is my code..

public void OwnerInfo() {

     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;
        }
        if (names[0] != null) {
            accountName = names[0];

            ContentResolver cr = this.getContentResolver();
            Cursor emailCur = cr.query(
                    ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                    ContactsContract.CommonDataKinds.Email.DATA + " = ?",
                    new String[] { accountName }, null);
            while (emailCur.moveToNext()) {
                id = emailCur
                        .getString(emailCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Email.CONTACT_ID));
                email = emailCur
                        .getString(emailCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                String newName = emailCur
                        .getString(emailCur
                                .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                if (name == null || newName.length() > name.length())
                    name = newName;

                Log.v("Got contacts", "ID " + id + " Email : " + email
                        + " Name : " + name);
            }

            emailCur.close();
            if (id != null) {

                // get the phone number
                Cursor pCur = cr.query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                + " = ?", new String[] { id }, null);
                while (pCur.moveToNext()) {
                    phone = pCur
                            .getString(pCur
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    Log.v("Got contacts", "phone" + phone);
                }
                pCur.close();
            }
        }
    }

but its show the error that..

08-22 11:47:36.392: E/AndroidRuntime(434): FATAL EXCEPTION: main
08-22 11:47:36.392: E/AndroidRuntime(434): java.lang.ArrayIndexOutOfBoundsException
08-22 11:47:36.392: E/AndroidRuntime(434):  at com.param.calltracker.SettingsActivity.OwnerInfo(SettingsActivity.java:142)
08-22 11:47:36.392: E/AndroidRuntime(434):  at com.param.calltracker.SettingsActivity$1.onClick(SettingsActivity.java:78)
08-22 11:47:36.392: E/AndroidRuntime(434):  at android.view.View.performClick(View.java:2485)
08-22 11:47:36.392: E/AndroidRuntime(434):  at android.view.View$PerformClick.run(View.java:9080)
08-22 11:47:36.392: E/AndroidRuntime(434):  at android.os.Handler.handleCallback(Handler.java:587)
08-22 11:47:36.392: E/AndroidRuntime(434):  at android.os.Handler.dispatchMessage(Handler.java:92)
08-22 11:47:36.392: E/AndroidRuntime(434):  at android.os.Looper.loop(Looper.java:123)
08-22 11:47:36.392: E/AndroidRuntime(434):  at android.app.ActivityThread.main(ActivityThread.java:3683)
08-22 11:47:36.392: E/AndroidRuntime(434):  at java.lang.reflect.Method.invokeNative(Native Method)
08-22 11:47:36.392: E/AndroidRuntime(434):  at java.lang.reflect.Method.invoke(Method.java:507)
08-22 11:47:36.392: E/AndroidRuntime(434):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-22 11:47:36.392: E/AndroidRuntime(434):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-22 11:47:36.392: E/AndroidRuntime(434):  at dalvik.system.NativeStart.main(Native Method)

where is the error in my code..pls help me..

Was it helpful?

Solution 2

This will help you a lot.........

for getting mobile number:

How to get the mobile number of current sim card in real device?

for getting user name: How can I get the google username on Android?

Try to run it in real device....

OTHER TIPS

This code will give owner full information
Try this code:-

public class EmailFetcher {



        static String getName(Context context) {
            Cursor CR=null;
            CR=getOwner(context);
            String id="",name="";
            while (CR.moveToNext()) {
                name = CR
                        .getString(CR
                                .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            }

            return name;
        }
        static String getEmailId(Context context) {

            Cursor CR=null;
            CR=getOwner(context);
            String id="",email="";
            while (CR.moveToNext()) {
                id = CR.getString(CR
                        .getColumnIndex(ContactsContract.CommonDataKinds.Email.CONTACT_ID));
                email = CR
                        .getString(CR
                                .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
            }
            return email;
    }


        static Cursor getOwner(Context context) {

            String accountName = null;
            Cursor emailCur=null;
            AccountManager accountManager = AccountManager.get(context);
            Account[] accounts = accountManager.getAccountsByType("com.google");
            if (accounts[0].name != null) {
                accountName = accounts[0].name;
                String where = ContactsContract.CommonDataKinds.Email.DATA + " = ?";
                ArrayList<String> what = new ArrayList<String>();
                what.add(accountName);
                Log.v("Got account", "Account " + accountName);
                for (int i = 1; i < accounts.length; i++) {
                    where += " or " + ContactsContract.CommonDataKinds.Email.DATA + " = ?";
                    what.add(accounts[i].name);
                    Log.v("Got account", "Account " + accounts[i].name);
                }
                String[] whatarr = (String[]) what.toArray(new String[what.size()]);
                ContentResolver cr = context.getContentResolver();
                emailCur = cr.query(
                        ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                        where,
                        whatarr, null);

               /* if (id != null) {

                    // get the phone number
                    Cursor pCur = cr.query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                    + " = ?", new String[]{id}, null);
                    while (pCur.moveToNext()) {
                        phone = pCur
                                .getString(pCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        Log.v("Got contacts", "phone" + phone);
                    }
                    pCur.close();
                }*/
            }
            return emailCur;
        }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top