Georg Buchta
- Forum-Beiträge: 24
09.11.2011, 13:12:16 via Website
09.11.2011 13:12:16 via Website
Hello
ich weiß es gibt x-tausend Beiträge wenn man via Google sucht aber nicht mal mit Hilfe derer schaffe ich es das Bild
eines Kontaktes verwenden zu können...
Hier mal mein bisheriger Code:
der Code ist wahrscheinlich für einen Fortgeschrittenen der Horror und manche Dinge gehen sicher einfacher,
ich sag nur ich bin noch Anfänger :-)
bei onCreate erzeuge ich eine ArrayList die ich dann weiter unten mit einer HashMap befülle,
soweit komme ich aber nicht
In den Zeilen 82 bis 100 versuche ich das Photo des Kontaktes auszulesen (via Methode getPhoto - Zeile 154 - 170)
um es später der ListView zu übergeben
ich glaube zu wissen wo mein problem liegt aber ich weiß nicht wie ich es in den Griff bekomme...
in der onCreate-Methode erzeuge ich einen SimpleAdapter mit einem int-Array und übergeben diesem die ID´s der Views
beim Auslesen des Photos bekomme ich aber von der getPhoto-Methode eine Bitmap zurück
bei der HashMap übergebe ich dann mit dem Text "userimage" einen int-Wert
(außerdem ist die Variable picture als int deklariert)
ich hoffe ihr könnt mir hier helfen...
DANKE!!
lg
georg
ich weiß es gibt x-tausend Beiträge wenn man via Google sucht aber nicht mal mit Hilfe derer schaffe ich es das Bild
eines Kontaktes verwenden zu können...
Hier mal mein bisheriger Code:
1package at.avalon.easydial;
2
3import java.io.*;
4import java.util.*;
5import android.app.*;
6import android.content.*;
7import android.database.*;
8import android.graphics.*;
9import android.net.*;
10import android.os.*;
11import android.provider.*;
12import android.util.*;
13import android.widget.*;
14
15public class ContactView extends Activity
16{
17 private static final String TAG = main.class.getSimpleName();
18
19 private ArrayList<HashMap<String, Object>> myList;
20 public Bitmap picture1;
21 public int picture2;
22 public String id;
23 public String name;
24 public String phonenumber;
25 public String email;
26 public String emailType;
27 public String searchText;
28 public String searchingFor;
29
30 @Override
31 public void onCreate(Bundle savedInstanceState)
32 {
33 super.onCreate(savedInstanceState);
34 setContentView(R.layout.contactview);
35
36 myList = new ArrayList<HashMap<String, Object>>();
37
38 ListView contactview = (ListView) findViewById(R.id.contactview_listview);
39
40 SimpleAdapter aa = new SimpleAdapter( this,
41 myList,
42 R.layout.contactviewitems,
43 new String[] { "userimage",
44 "name",
45 "phonenumber",
46 "callimage",
47 "smsimage",
48 "mailimage"},
49 new int[] { R.id.contactviewitems_userimage,
50 R.id.contactviewitems_username,
51 R.id.contactviewitems_telephonenumber,
52 R.id.contactviewitems_callimage,
53 R.id.contactviewitems_smsimage,
54 R.id.contactviewitems_mailimage} );
55 contactview.setAdapter(aa);
56
57 Bundle extras = getIntent().getExtras();
58 searchingFor = extras.getString("searchText");
59
60 Log.v(TAG,"Methode searchForContact wird gestartet");
61 searchForContact(searchingFor);
62 }
63
64 public void searchForContact(String search)
65 {
66 searchText = search;
67
68 ContentResolver cr = getContentResolver();
69 Cursor cur = cr.query( ContactsContract.Contacts.CONTENT_URI,
70 null, null, null, null);
71 if (cur.getCount() > 0)
72 {
73 while (cur.moveToNext())
74 {
75 Log.v(TAG,"while läuft solange cursor.moveToNext == TRUE");
76
77 id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
78 name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
79
80 Log.v(TAG,"vor if-bedingung für PHOTO");
81
82 if(cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.PHOTO_ID)) != 0)
83 {
84 Log.v(TAG,"vor if-bedingung für PHOTO - IF_ZWEIG");
85
86 long id2 = (long) Integer.parseInt(id);
87 Log.v(TAG,"Variable id2 erzeugt und gefüllt: " + id2);
88 Log.v(TAG,"Variable temp erzeugt");
89 Bitmap bm = getPhoto(cr,id2);
90 Log.v(TAG,"temp-Variable gefüllt: " + bm);
91
92
93 Log.v(TAG,"getImage erledigt");
94 }
95 else
96 {
97 Log.v(TAG,"vor if-bedingung für PHOTO - ELSE_ZWEIG");
98
99 picture2 = R.drawable.vorlage_userimage;
100 }
101
102 Log.v(TAG,"vor if-bedingung für phonenumber");
103
104 if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
105 {
106 Cursor pCur = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
107 null,
108 ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
109 new String[]{id},
110 null);
111 while(pCur.moveToNext())
112 {
113 phonenumber = pCur.getString(pCur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER));
114 }
115 pCur.close();
116 }
117
118 Log.v(TAG, "beginne mit Hinzufügen der Kontakte zur HashMap");
119
120 if((name.toLowerCase()).indexOf(this.searchText) >= 0)
121 {
122 Log.v(TAG,"HashMap wird erzeugt");
123 HashMap<String, Object> map = new HashMap<String, Object>();
124 map.put("userimage", picture);
125 map.put("name", name);
126 map.put("phonenumber", phonenumber);
127 map.put("callimage", R.drawable.vorlage_call);
128 map.put("smsimage", R.drawable.vorlage_sms);
129 map.put("mailimage", R.drawable.vorlage_mail);
130 Log.v(TAG,"HashMap hat folgende Wert");
131 Log.v(TAG,"name: " + name);
132 Log.v(TAG,"phonenumber: " + phonenumber);
133 Log.v(TAG,"HashMap wird dem Array übergeben");
134 myList.add(map);
135 }
136 }
137
138 Log.v(TAG,"es gibt keine weiteren Einträge mehr");
139 Log.v(TAG,"cursor.moveToNext == FALSE");
140
141 Log.v(TAG,"Prüfung ob myList.isEmpty():" + (myList.isEmpty()));
142
143 if(myList.isEmpty())
144 {
145 Toast toast = Toast.makeText(this, "Für diese Suche leider keine Ergebinsse", Toast.LENGTH_SHORT);
146 toast.show();
147 startActivity(new Intent(this, main.class));
148 }
149
150 Log.v(TAG,"Methode searchForContacts ist durch");
151 }
152 }
153
154 public Bitmap getPhoto(ContentResolver contentResolver, Long contactId)
155 {
156 Log.v(TAG,"Methode getPhoto gestartet");
157 Log.v(TAG,"Varibale ContactsContract.Contacts.CONTENT_URI: " + ContactsContract.Contacts.CONTENT_URI);
158 Log.v(TAG,"Varibale contactID: " + contactId);
159 Uri contactPhotoUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
160 Log.v(TAG,"ContactPhotoUri != null: " + contactPhotoUri);
161
162 Log.v(TAG,"fill photDataStream with InputStream");
163 InputStream photoDataStream = ContactsContract.Contacts.openContactPhotoInputStream(contentResolver,contactPhotoUri);
164 Log.v(TAG,"photoDataStream != NULL: " + photoDataStream);
165
166 Log.v(TAG,"foll photo with bitmap");
167 Bitmap photo = BitmapFactory.decodeStream(photoDataStream);
168 Log.v(TAG,"photo must != null: " + photo);
169
170 return photo;
171 }
172}
2
3import java.io.*;
4import java.util.*;
5import android.app.*;
6import android.content.*;
7import android.database.*;
8import android.graphics.*;
9import android.net.*;
10import android.os.*;
11import android.provider.*;
12import android.util.*;
13import android.widget.*;
14
15public class ContactView extends Activity
16{
17 private static final String TAG = main.class.getSimpleName();
18
19 private ArrayList<HashMap<String, Object>> myList;
20 public Bitmap picture1;
21 public int picture2;
22 public String id;
23 public String name;
24 public String phonenumber;
25 public String email;
26 public String emailType;
27 public String searchText;
28 public String searchingFor;
29
30 @Override
31 public void onCreate(Bundle savedInstanceState)
32 {
33 super.onCreate(savedInstanceState);
34 setContentView(R.layout.contactview);
35
36 myList = new ArrayList<HashMap<String, Object>>();
37
38 ListView contactview = (ListView) findViewById(R.id.contactview_listview);
39
40 SimpleAdapter aa = new SimpleAdapter( this,
41 myList,
42 R.layout.contactviewitems,
43 new String[] { "userimage",
44 "name",
45 "phonenumber",
46 "callimage",
47 "smsimage",
48 "mailimage"},
49 new int[] { R.id.contactviewitems_userimage,
50 R.id.contactviewitems_username,
51 R.id.contactviewitems_telephonenumber,
52 R.id.contactviewitems_callimage,
53 R.id.contactviewitems_smsimage,
54 R.id.contactviewitems_mailimage} );
55 contactview.setAdapter(aa);
56
57 Bundle extras = getIntent().getExtras();
58 searchingFor = extras.getString("searchText");
59
60 Log.v(TAG,"Methode searchForContact wird gestartet");
61 searchForContact(searchingFor);
62 }
63
64 public void searchForContact(String search)
65 {
66 searchText = search;
67
68 ContentResolver cr = getContentResolver();
69 Cursor cur = cr.query( ContactsContract.Contacts.CONTENT_URI,
70 null, null, null, null);
71 if (cur.getCount() > 0)
72 {
73 while (cur.moveToNext())
74 {
75 Log.v(TAG,"while läuft solange cursor.moveToNext == TRUE");
76
77 id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
78 name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
79
80 Log.v(TAG,"vor if-bedingung für PHOTO");
81
82 if(cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.PHOTO_ID)) != 0)
83 {
84 Log.v(TAG,"vor if-bedingung für PHOTO - IF_ZWEIG");
85
86 long id2 = (long) Integer.parseInt(id);
87 Log.v(TAG,"Variable id2 erzeugt und gefüllt: " + id2);
88 Log.v(TAG,"Variable temp erzeugt");
89 Bitmap bm = getPhoto(cr,id2);
90 Log.v(TAG,"temp-Variable gefüllt: " + bm);
91
92
93 Log.v(TAG,"getImage erledigt");
94 }
95 else
96 {
97 Log.v(TAG,"vor if-bedingung für PHOTO - ELSE_ZWEIG");
98
99 picture2 = R.drawable.vorlage_userimage;
100 }
101
102 Log.v(TAG,"vor if-bedingung für phonenumber");
103
104 if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
105 {
106 Cursor pCur = cr.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
107 null,
108 ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
109 new String[]{id},
110 null);
111 while(pCur.moveToNext())
112 {
113 phonenumber = pCur.getString(pCur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER));
114 }
115 pCur.close();
116 }
117
118 Log.v(TAG, "beginne mit Hinzufügen der Kontakte zur HashMap");
119
120 if((name.toLowerCase()).indexOf(this.searchText) >= 0)
121 {
122 Log.v(TAG,"HashMap wird erzeugt");
123 HashMap<String, Object> map = new HashMap<String, Object>();
124 map.put("userimage", picture);
125 map.put("name", name);
126 map.put("phonenumber", phonenumber);
127 map.put("callimage", R.drawable.vorlage_call);
128 map.put("smsimage", R.drawable.vorlage_sms);
129 map.put("mailimage", R.drawable.vorlage_mail);
130 Log.v(TAG,"HashMap hat folgende Wert");
131 Log.v(TAG,"name: " + name);
132 Log.v(TAG,"phonenumber: " + phonenumber);
133 Log.v(TAG,"HashMap wird dem Array übergeben");
134 myList.add(map);
135 }
136 }
137
138 Log.v(TAG,"es gibt keine weiteren Einträge mehr");
139 Log.v(TAG,"cursor.moveToNext == FALSE");
140
141 Log.v(TAG,"Prüfung ob myList.isEmpty():" + (myList.isEmpty()));
142
143 if(myList.isEmpty())
144 {
145 Toast toast = Toast.makeText(this, "Für diese Suche leider keine Ergebinsse", Toast.LENGTH_SHORT);
146 toast.show();
147 startActivity(new Intent(this, main.class));
148 }
149
150 Log.v(TAG,"Methode searchForContacts ist durch");
151 }
152 }
153
154 public Bitmap getPhoto(ContentResolver contentResolver, Long contactId)
155 {
156 Log.v(TAG,"Methode getPhoto gestartet");
157 Log.v(TAG,"Varibale ContactsContract.Contacts.CONTENT_URI: " + ContactsContract.Contacts.CONTENT_URI);
158 Log.v(TAG,"Varibale contactID: " + contactId);
159 Uri contactPhotoUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
160 Log.v(TAG,"ContactPhotoUri != null: " + contactPhotoUri);
161
162 Log.v(TAG,"fill photDataStream with InputStream");
163 InputStream photoDataStream = ContactsContract.Contacts.openContactPhotoInputStream(contentResolver,contactPhotoUri);
164 Log.v(TAG,"photoDataStream != NULL: " + photoDataStream);
165
166 Log.v(TAG,"foll photo with bitmap");
167 Bitmap photo = BitmapFactory.decodeStream(photoDataStream);
168 Log.v(TAG,"photo must != null: " + photo);
169
170 return photo;
171 }
172}
der Code ist wahrscheinlich für einen Fortgeschrittenen der Horror und manche Dinge gehen sicher einfacher,
ich sag nur ich bin noch Anfänger :-)
bei onCreate erzeuge ich eine ArrayList die ich dann weiter unten mit einer HashMap befülle,
soweit komme ich aber nicht
In den Zeilen 82 bis 100 versuche ich das Photo des Kontaktes auszulesen (via Methode getPhoto - Zeile 154 - 170)
um es später der ListView zu übergeben
ich glaube zu wissen wo mein problem liegt aber ich weiß nicht wie ich es in den Griff bekomme...
in der onCreate-Methode erzeuge ich einen SimpleAdapter mit einem int-Array und übergeben diesem die ID´s der Views
beim Auslesen des Photos bekomme ich aber von der getPhoto-Methode eine Bitmap zurück
bei der HashMap übergebe ich dann mit dem Text "userimage" einen int-Wert
(außerdem ist die Variable picture als int deklariert)
ich hoffe ihr könnt mir hier helfen...
DANKE!!
lg
georg
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.