在图像视图中显示联系人图像

Posted

技术标签:

【中文标题】在图像视图中显示联系人图像【英文标题】:display contact image in image view 【发布时间】:2012-02-21 23:22:02 【问题描述】:

我想获取联系人图像并将其显示在图像视图中。我希望这可以根据用户选择的联系人来工作。我有一个按钮,让用户按下它并获取联系电话号码并将其显示在文本字段中。但现在我需要它来获取照片并显示它。有人知道我如何操纵它来获取照片吗? (忽略说电子邮件的日志和说电子邮件的变量,我操纵了代码,所以它得到了电话号码。)

case CONTACT_PICKER_RESULT:
                Cursor cursor = null;
                String email = "";
                try 
                    Bundle extras = data.getExtras();
                    Set<String> keys = extras.keySet();
                    Iterator<String> iterate = keys.iterator();
                    while (iterate.hasNext()) 
                        String key = iterate.next();
                        Log.v(DEBUG_TAG, key + "[" + extras.get(key) + "]");
                    

                    Uri result = data.getData();
                    Log.v(DEBUG_TAG,
                            "Got a contact result: " + result.toString());

                    // get the contact id from the Uri
                    String id = result.getLastPathSegment();

                    // query for everything email
                    cursor = getContentResolver().query(Phone.CONTENT_URI,
                            null, Phone.CONTACT_ID + "=?", new String[]  id ,
                            null);

                    int emailIdx = cursor.getColumnIndex(Phone.DATA);

                    // let's just get the first email
                    if (cursor.moveToFirst()) 

                        /*
                         * Iterate all columns. :) String columns[] =
                         * cursor.getColumnNames(); for (String column :
                         * columns)  int index = cursor.getColumnIndex(column);
                         * Log.v(DEBUG_TAG, "Column: " + column + " == [" +
                         * cursor.getString(index) + "]"); 
                         */

                        email = cursor.getString(emailIdx);

                        Log.v(DEBUG_TAG, "Got email: " + email);

                     else 
                        Log.w(DEBUG_TAG, "No results");
                    
                 catch (Exception e) 
                    Log.e(DEBUG_TAG, "Failed to get email data", e);
                 finally 
                    if (cursor != null) 
                        cursor.close();
                    
                    EditText emailEntry = (EditText) findViewById(R.id.txtPhoneNo);
                    emailEntry.setText(email);
                    if (email.length() == 0) 
                        Toast.makeText(this, "No email found for contact.",
                                Toast.LENGTH_LONG).show();
                    

                

                break;
            

         else 
            Log.w(DEBUG_TAG, "Warning: activity result not ok");
        
    

【问题讨论】:

droidnova.com/… 最近很忙,一直没有机会尝试,但我很快就会请稍等。谢谢,如果可行,我会批准。 【参考方案1】:

使用它

 Uri conUri=Uri.parse(url);
        InputStream photoInputStream=Contacts.openContactPhotoInputStream(mContext.getContentResolver(), conUri);
        if(photoInputStream==null)
            return framePhoto(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.ic_contact_list_picture));
        Bitmap photo=framePhoto(getPhoto(mContext.getContentResolver(), conUri));

有关更多信息,请转到此问题

Load contact photo in a listview performance

【讨论】:

嗯,你确定这行得通吗???我应该把它放在哪里,因为我认为它不起作用。 您想在哪里显示联系人图像。使用位图照片并设置您想要的任何位置【参考方案2】:

查看http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html中的openContactPhotoInputStream(android.content.ContentResolver,android.net.Uri)

【讨论】:

以上是关于在图像视图中显示联系人图像的主要内容,如果未能解决你的问题,请参考以下文章

列表视图中的Android联系人图像占位符

获取所有联系人并在列表视图中显示它们

滚动视图与集合视图。获取“可见图像”

如何在没有图像的联系人上显示自定义图标?

如何在后台加载联系人图像?

Android - 检索联系人照片和显示