Verständnisproblem Emulator vs. Handy

  • Antworten:5
  • Bentwortet
Stefan S.
  • Forum-Beiträge: 560

16.05.2011, 07:25:16 via Website

Ich bastle mir zur Zeit eine App für die Kontakteverwaltung. Ich kann diese auch auf verschiedenen AVDs und Targets (Ab level 7 bei mir) erfolgreich testen.
Wenn ich die App dann auf mein Handy lade für einen ersten Versuch funktioniert es nur teilweise (bis gar nicht).

Ist das normal? Ich dachte wenn ich die richttige API und Target verwende soltle es dann auf dem Handy auch gehen?

Antworten
Stefan S.
  • Forum-Beiträge: 560

16.05.2011, 08:23:36 via Website

Ich habe eine Kurzwahl programmiert, bei welcher man einen bestehenden Kontakt aussuchen kann. Ich speichere dann die RAW_CONTACT_ID und ein paar zusatzinfos in eine DB.
Danach lade ich anhand der gespeicherten ID und z.B. dem PhoneType die Telefonnumer für die Darstellung in meiner Listview. Und hier ist das Problem... erfindet die Nummer nicht oder z.T. die Nummer eines anderen Kontaktes.
Kann dies sein wegen den möglichen Verknüpfungen (Facebook, WhatsApp etc.) von Kontakten?

Antworten
Martin Grulich
  • Forum-Beiträge: 56

16.05.2011, 14:50:57 via Website

Stefan S.
Ich habe eine Kurzwahl programmiert, bei welcher man einen bestehenden Kontakt aussuchen kann. Ich speichere dann die RAW_CONTACT_ID und ein paar zusatzinfos in eine DB.
Danach lade ich anhand der gespeicherten ID und z.B. dem PhoneType die Telefonnumer für die Darstellung in meiner Listview. Und hier ist das Problem... erfindet die Nummer nicht oder z.T. die Nummer eines anderen Kontaktes.
Kann dies sein wegen den möglichen Verknüpfungen (Facebook, WhatsApp etc.) von Kontakten?
Woran scheitert es denn auf dem realen Endgferät ? Wie äussert sich dein Problem ?
Schonmal direktes Debugging über dein Smartphone und nicht den Emulator in der IDE versucht ?

Gruß Martin

Antworten
Stefan S.
  • Forum-Beiträge: 560

16.05.2011, 14:58:43 via Website

Ich verwende folgenden Code
1private Cursor GetNumber(int nContactID, String sPhoneType)
2 {
3 ContentResolver crRes = getContentResolver();
4 String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.TYPE};
5 String where = ContactsContract.Data.RAW_CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ? AND " + ContactsContract.CommonDataKinds.Phone.TYPE + " = ?";
6 String[] whereParameters = new String[]{String.valueOf(nContactID), ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, sPhoneType};
7 //Request
8 Cursor number = crRes.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, where, whereParameters, null);
9 return number;
10 }
ContactID und PhoneType erhalte ich beim Speichern des Kontakts in meine DB. Hier möchte ich nun die Werte wieder auslesen und in meine ListView legen. Der Cursor liefert aber keine Werte zurück.

Antworten
Stefan S.
  • Forum-Beiträge: 560

16.05.2011, 15:57:11 via Website

Ich habe jetzt den Aufruf wie folgt geändert:

1ContentResolver crRes = getContentResolver();
2 String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.TYPE};
3 String where = ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ? AND " + ContactsContract.CommonDataKinds.Phone.TYPE + " = ?";
4 String[] whereParameters = new String[]{String.valueOf(nContactID), ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, sPhoneType};

so scheint es zu klappen

Antworten