Autore Topic: Aggiornare informazioni rubrica  (Letto 747 volte)

Offline dedo89

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7
Aggiornare informazioni rubrica
« il: 06 Gennaio 2012, 18:19:14 CET »
0
Salve a tutti!
Sto creando un'applicazione che permette di recuperare e modificare alcune informazioni presenti nella rubrica.
Per quanto riguarda il recupero riesco ad ottenere tranquillamente nome, numero di telefono e indirizzo email utilizzando la funzione getContentResolver().query(..).
Ora però mi interessa modificare queste informazioni, in particolare sto tentando di modificare il numero di telefono (poi toccherà all'indirizzo email) sfruttando la funzione getContentResolver().update(..).

Il problema è che non riesco ad aggiornare nessuna riga! ecco il codice:

Codice (Java): [Seleziona]
    private boolean changeAddress(String newAddress){
       String name="giovanni";
         
        Cursor c = getContentResolver().query( Contacts.Phones.CONTENT_URI,
                                        new String[] { Contacts.Phones.DISPLAY_NAME, Contacts.Phones.PERSON_ID},
                                        Contacts.Phones.DISPLAY_NAME+" = '"+name+"'",
                                        null,
                                        Contacts.Phones.DISPLAY_NAME + " COLLATE LOCALIZED ASC"
                                        );
        c.moveToFirst();
       
        String id = c.getString(1);

        Uri.Builder builder = Contacts.Phones.CONTENT_URI.buildUpon();
        builder.encodedPath(Contacts.People.Phones.CONTENT_DIRECTORY + "/" + id);
       
        ContentValues contentValues = new ContentValues();
        contentValues.put( Contacts.People.Phones.NUMBER, "1234567890");
        builder.encodedPath(Contacts.People.Phones.CONTENT_DIRECTORY + "/" + id);

        int n=getContentResolver().update( builder.build(), contentValues, null, null );

        println("righe aggiornate="+n);
        return true;
}


Tutte le volte il numero di righe aggiornato è zero. Qualcuno sa dirmi dove sbaglio?

Ho cercato molto in rete ma la maggior parte degli esempi fa riferimento alla versione 2.x e utilizzano una classe ContactsContract, solo che io sto lavorando sulla versione 1.6 in cui questa non è ancora definita.

Grazie.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Aggiornare informazioni rubrica
« Risposta #1 il: 06 Gennaio 2012, 19:53:24 CET »
0
Domanda forse stupida: hai settato il permesso per scrivere i contatti?

E poi, se non hai esigenze molto specifiche, puoi abbandonare senza problemi la compatibilità con 1.6 e precedenti, vista l'esigua percentuale di terminali con questa versione.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline dedo89

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7
Re:Aggiornare informazioni rubrica
« Risposta #2 il: 06 Gennaio 2012, 20:16:32 CET »
0
Mah a dir la verità questa è solo una piccola parte dell'applicazione. In realtà sto realizzando un terminale Voip...in ogni caso non vorrei cambiare versione.

Per quanto riguarda i permessi nel manifest ho questi:
Codice: [Seleziona]
<uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.VIBRATE" ></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission>

Dovrebbe essere il read/write contacts giusto?