2015-06-28 5 views
-1

Я пытался отображать контакты с телефона в своем приложении, но показывал их контакты из gmail и телефона. Но мой эмулятор показывает только контакт с телефоном, а не контакт Gmail.отображение контактов в gmail и контакте телефона с помощью Cursor android

Как избежать контактов gmail, которые не должны быть выбраны. Мне нужны только контакты с телефона.

Контакты с телефона являются:

contacts from phone

контакты, показывающие в мое приложение,

contacts showing in my app

Мой код,

private class ListViewContactsLoader extends AsyncTask<Void, Void, Cursor>{ 

    @Override 
    protected Cursor doInBackground(Void... params) { 
     Uri contactsUri = ContactsContract.Contacts.CONTENT_URI; 

     // Querying the table ContactsContract.Contacts to retrieve all the contacts 
     Cursor contactsCursor = getActivity().getContentResolver().query(contactsUri, null, null, null, 
       ContactsContract.Contacts.DISPLAY_NAME + " ASC "); 

     if(contactsCursor.moveToFirst()){ 
      do{ 
       long contactId = contactsCursor.getLong(contactsCursor.getColumnIndex("_ID")); 

       Uri dataUri = ContactsContract.Data.CONTENT_URI; 

       // Querying the table ContactsContract.Data to retrieve individual items like 
       // home phone, mobile phone, work email etc corresponding to each contact 
       Cursor dataCursor = getActivity().getContentResolver().query(dataUri, null, 
             ContactsContract.Data.CONTACT_ID + "=" + contactId, 
             null, null); 

       String displayName=""; 
       photoPath="" + R.drawable.noimage; 
       byte[] photoByte=null; 

       if(dataCursor.moveToFirst()){ 
        // Getting Display Name 
        displayName = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)); 
        do{ 
         // Getting Phone numbers 
         if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)){ 
          number = dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         } 
         // Getting Photo 
         if(dataCursor.getString(dataCursor.getColumnIndex("mimetype")).equals(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE)){ 
          photoByte = dataCursor.getBlob(dataCursor.getColumnIndex("data15")); 

          if(photoByte != null) { 
           Bitmap bitmap = BitmapFactory.decodeByteArray(photoByte, 0, photoByte.length); 

           // Getting Caching directory 
           File cacheDirectory = getActivity().getBaseContext().getCacheDir(); 

           // Temporary file to store the contact image 
           File tmpFile = new File(cacheDirectory.getPath() + "/wpta_"+contactId+".png"); 

           // The FileOutputStream to the temporary file 
           try { 
            FileOutputStream fOutStream = new FileOutputStream(tmpFile); 

            // Writing the bitmap to the temporary file as png file 
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOutStream); 

            // Flush the FileOutputStream 
            fOutStream.flush(); 

            //Close the FileOutputStream 
            fOutStream.close(); 

           } catch (Exception e) { 
            e.printStackTrace(); 
           } 
           photoPath = tmpFile.getPath(); 
          } 
         } 
        }while(dataCursor.moveToNext()); 

        // Adding id, display name, path to photo and other details to cursor 
        mMatrixCursor.addRow(new Object[]{Long.toString(contactId), displayName, number, photoPath}); 

       } 
      }while(contactsCursor.moveToNext()); 
     } 
     return mMatrixCursor; 
    } 

Как избежать контактов с GMail. Это возможно.

+1

проверка 'ContactsContract.SyncColumns # ACCOUNT_TYPE' в вашем цикле, а затем изменить выбор и selectionArgs вашего основного запроса, чтобы отфильтровать определенную учетную запись типа es – pskink

+0

@pskink: - любой пример? –

+0

нет, нет примера: все, что вам нужно, это следовать моим советам – pskink

ответ

1

должны попробовал этот Код:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); 
String mPhoneNumber = tMgr.getLine1Number(); 

Требуется разрешение:

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

если вам нужен пример, то вы можете проверить это http://examples.javacodegeeks.com/android/core/provider/android-contacts-example/

 Смежные вопросы

  • Нет связанных вопросов^_^