1. 程式人生 > >android如何取得本地通訊錄的頭像的原圖

android如何取得本地通訊錄的頭像的原圖

如果想通訊錄進入詳情頁,那麼最重要的引數就是contactId,這個是聯絡人的唯一標識

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {

   @Override

   public void onItemClick(AdapterView<?> parent, View view, 

int position, long id) {

      try {

         Cursor cursor = (Cursor) getListAdapter().getItem(position);

         if (cursor == 

null) {

            return;

         }

 

         int contactId = cursor.getInt(Personal.ID_COLUMN_INDEX);

         

Intent intent = new Intent();

         intent.setClass(ContactsList.this, ContactDetail.class);

         intent.putExtra("contactId",contactId);

         startActivity(intent);

      }catch(Exception ex) {

         ex.printStackTrace();

      }

   }

});

本地通訊錄的原圖獲取方法是:

>注‘Android技術交流群878873098,歡迎大家加入交流,暢談!本群有免費學習資料視訊且免費分享

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

public class ContactDetail extends Activity {

 

    private ImageView contact_photo;

 

    public static void startActivity(Context context) {

        Intent intent = new Intent();

        intent.setClass(context,ContactDetail.class);

        context.startActivity(intent);

    }

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.contact_detail);

 

        int contactId = getIntent().getIntExtra("contactId"0);

 

        contact_photo = (ImageView)findViewById(R.id.contact_photo);

 

        loadTask task = new loadTask(contactId);

        task.execute();

 

    }

 

 

    private class loadTask extends AsyncTask<Void, Void, Bitmap> {

 

        public loadTask(int id) {

            contactId = id;

        }

        private int contactId;

 

        @Override

        protected Bitmap doInBackground(Void... params) {

            InputStream inputStream = openDisplayPhoto(contactId);

 

            BitmapFactory.Options opt = new BitmapFactory.Options();

            opt.inSampleSize = 1;

            Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, opt);

            return bitmap;

        }

 

        @Override

        protected void onPostExecute(Bitmap result) {

 

            if(result != null) {

                contact_photo.setImageBitmap(result);

            }

            super.onPostExecute(result);

        }

 

    }

 

    /**

     * 這個是取到清晰圖的inputStream的程式碼

     * @param contactId

     * @return

     */

    public InputStream openDisplayPhoto(long contactId) {

        Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);

        Uri displayPhotoUri = Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.DISPLAY_PHOTO);

        try {

            AssetFileDescriptor fd =

                    this.getContentResolver().openAssetFileDescriptor(displayPhotoUri, "r");

            return fd.createInputStream();

        catch (IOException e) {

            e.printStackTrace();

            return null;

        }

    }

 

}

activity的執行效果是:

>注‘Android技術交流群878873098,歡迎大家加入交流,暢談!本群有免費學習資料視訊且免費分享

https://img3.mukewang.com/5c0e136d00013d8306481106.jpg