Autore Topic: Widget con lista dei contatti  (Letto 1256 volte)

Offline casim

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    galaxy note 3, galaxy note 10.1
  • Sistema operativo:
    windows xp
Widget con lista dei contatti
« il: 14 Novembre 2014, 12:49:34 CET »
0
Salve a tutti. Ho sviluppato un dialer alternativo per android. Adesso vorrei implementare un widget che mostri la lista dei contatti preferiti. Ho seguito le guide che ho trovato in internet, ma al momento di reperire i contatti ottengo una eccezione:

java.lang.IllegalStateException: Couldn't read row 0, col xxx from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.

Per ricavare i contatti uso lo stesso sistema perfettamente funzionante nell'activity della mia applicazione, ovvero:

Codice (Java): [Seleziona]
private void populateListItem() {
               
                String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;
               
                String secondarySortOrder = ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY;
               
                Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,null, sortOrder + " COLLATE NOCASE, " + secondarySortOrder);
                while (cursor.moveToNext()) {
                       //vado reperendo i dati
                }

Ecco, nel metodo ci entra, ma poi crasha tutto, e nel log trovo quell'eccezione. Dal momento che il widget viene piazzato sullo schermo (ma ovviamente non spunta nulla, se non il messaggio di crash), credo che l'errore sia proprio nel cursor. Qualche idea?

Offline casim

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    galaxy note 3, galaxy note 10.1
  • Sistema operativo:
    windows xp
Re:Widget con lista dei contatti
« Risposta #1 il: 02 Dicembre 2014, 03:55:44 CET »
0
Beh, il problema l'ho risolto da solo, era legato ad alcune cose che facevo dentro il while. Adesso però, a distanza di tempo, se n'è presentato un'altro.

Nel mio widget ho la lista dei contatti, composta da nome e foto. Funziona perfettamente, almeno su tutti dispositivi che ho provato fino ad oggi. Sta di fatto che stasera ho provato sul mio note 4 nuovissimo (fino a ieri avevo un note 3) e le foto non si vedono. Io le setto nell'imageview usando

remoteView.setImageViewUri

ma non funziona. Eppure non mi da eccezioni, le uri non sono null (nell'app le immagini si vedono, le uri sono le stesse), e la cosa assurda è che se provo ad ottenere il bitmap dalla uri così:

Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), Uri.parse(contact.getPhotoUri()));
remoteView.setImageViewBitmap(R.id.image, bitmap);

tutto funziona, ma ho letto che una procedura del genere è sconsigliata per questioni di performance. Qualcuno sa niente a riguardo?