Autore Topic: Estrazione note da contatti  (Letto 478 volte)

Offline ms92ita

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Estrazione note da contatti
« il: 17 Giugno 2011, 18:51:26 CEST »
0
Salve a tutti,
il mio problema è che non mi fa estrarre il campo note sui contatti (sto provando da emulatore ed ho messo 2-3 contatti a casaccio con appunto delle note scritte, almeno per vedere se va realmente)

vi posto il codice:
Codice (Java): [Seleziona]
Cursor c = getContentResolver().query(
                                ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
                if (c.moveToFirst()) {
                        String idContatti=c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));
                         String noteWhere = ContactsContract.Data.RAW_CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
                        String[] noteWhereParams = new String[]{idContatti,
                                ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE};
                        Cursor noteCur = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, noteWhere, noteWhereParams, null);
                        if (noteCur.moveToFirst()) {
                        while (c.moveToNext()) {
                                String noteStr = c.getString(c
                                                .getColumnIndexOrThrow(ContactsContract.Data.DATA1));
                                Location posAmico = null;
                                if (noteStr != null) {
                                        final String geoPattern = "(geo:[\\-]?[0-9]{1,3}\\.[0-9]{1,6}\\,[\\-]?[0-9]{1,3}\\.[0-9]{1,6}\\#)";
                                        Pattern pattern = Pattern.compile(geoPattern);
                                        CharSequence inputStr = noteStr;
                                        Matcher matcher = pattern.matcher(inputStr);
                                        boolean matchFound = matcher.find();
                                        if (matchFound) {
                                                String groupStr = matcher.group(0);
                                                posAmico = new Location("");
                                                String latid = groupStr.substring(
                                                                groupStr.indexOf(":") + 1,
                                                                groupStr.indexOf(","));
                                                String longit = groupStr.substring(
                                                                groupStr.indexOf(",") + 1,
                                                                groupStr.indexOf("#"));
                                                posAmico.setLongitude(Float.parseFloat(longit));
                                                posAmico.setLatitude(Float.parseFloat(latid));
                                        }
                                }
                                String nomeAmico = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
                                amici.add(new Amico(posAmico, nomeAmico));
                                }
                        }
                        noteCur.close();
                }
                c.close();

ho utilizzato getcolumnindexorthrow per capire infatti quale errore specifico mi da... infatti mi da errore in questa riga:
String noteStr = c.getString(c
                  .getColumnIndexOrThrow(ContactsContract.Data.DATA1));

ho provato a mettere anche ContactsContract.CommonDataKinds.Note.Note ma mi da lo stesso identico errore

ecco cosa mi dice il logcat:
E/AndroidRuntime( 5766): Caused by: java.lang.IllegalArgumentException: column 'data1' does not exist
E/AndroidRuntime( 5766):    at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
E/AndroidRuntime( 5766):    at android.database.CursorWrapper.getColumnIndexOrThrow(CursorWrapper.java:99)
E/AndroidRuntime( 5766):    at appfinale.principale.CercaAmici.aggiornaListaAmici(CercaAmici.java:162)
E/AndroidRuntime( 5766):    at appfinale.principale.CercaAmici.onCreate(CercaAmici.java:57)
E/AndroidRuntime( 5766):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 5766):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime( 5766):    ... 11 more

qualcuno mi può dire come risolvere il problema???

P.S. sto uilizzando android 2.2
« Ultima modifica: 17 Giugno 2011, 19:06:59 CEST da ms92ita »

Offline AndroidLab

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • http://it.linkedin.com/in/sandrotroncone
    • Mostra profilo
    • AndroidLab
Re:Estrazione note da contatti
« Risposta #1 il: 21 Giugno 2011, 10:12:29 CEST »
0
    Strano, prova a dare un'occhiata qui ContactsContract.DataColumns | Android Developers
    Ti consiglio anche di provare a cambiare SDK sull'ADT, precisamente fare test tra Froyo e Gingerbread.
Entra nell'AndroidLab!