簡體   English   中英

檢索聯系人照片?

[英]Retrieving Contact photo?

我無法從聯系人獲取照片並將其放在“列表視圖”中,而是在HashMap中進行組織。 當某些聯系人沒有照片時,我想顯示默認照片。 我現在沒有照片。

這是我的代碼:

cOznaci = (ImageView) findViewById(R.id.cbOznaci);    
ArrayList<HashMap<String, Object>> mapa = new ArrayList<HashMap<String, Object>>();    
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

        if(cur.getCount() > 0){
            while(cur.moveToNext()){
                String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                long id2 = Long.parseLong(id);
                Object slika = loadContactPhoto(cr, id2);
                if(Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0){

                    final Cursor numCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "  = ?", new String[]{id}, null);

                    for(numCur.moveToFirst(); !numCur.isAfterLast(); numCur.moveToNext()){

                        brTel = numCur.getString(numCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        ime = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

                        tmpIme = new String[] {ime};

                        for(int i = 0; i < tmpIme.length; i++){

                            HashMap<String, Object> imeMapa = new HashMap<String, Object>();
                            imeMapa.put("imeLista", ime);
                            imeMapa.put("checkBox", slika);
                            imeMapa.put("Mobilni", brTel);
                            mapa.add(imeMapa);
                        }

                    }
                    numCur.close();

                } // End if

            } // While
        }

        SimpleAdapter sa = new SimpleAdapter(getApplicationContext(), mapa, R.layout.imenik, new String[] {"imeLista", "checkBox", "Mobilni"}, new int[] {R.id.tvImeImenik, R.id.cbOznaci, R.id.tvSamoProba});
        lImenik.setAdapter(sa);

            }
        });

    } // onCreate

    public static Bitmap loadContactPhoto(ContentResolver cr, long  id) { 
        Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id); 
        InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
         if (input == null) {  
          return null;

         }
         return BitmapFactory.decodeStream(input);
        }

您不能通過這樣的SimpleAdapter將位圖分配給ImageView,而只能使用字符串和整數自動分配。 您將需要創建一個ViewBinder來執行更復雜的任務。

但是,我建議不要使用該14級API,而應使用PHOTO_URI。 那是一個字符串,SimpleAdapter的默認ViewBinder應該做正確的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM