2012-09-06 3 views
0

J'essaie d'écrire une petite application qui montre et ajoute des contacts à un annuaire Android. J'ajoute des contacts de cette façon:Android ajouter des contacts

ContentValues cv = new ContentValues(); 
EditText te1 = (EditText)findViewById(R.id.EditText1); 
EditText te2 = (EditText)findViewById(R.id.EditText2); 
cv.put(ContactsContract.Data.RAW_CONTACT_ID, 400); 
cv.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 
cv.put(ContactsContract.CommonDataKinds.Phone.NUMBER, te2.getText().toString()); 
cv.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE); 
cv.put(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, te1.getText().toString()); 
ContentResolver contentResolver = getContentResolver(); 
contentResolver.insert(ContactsContract.Data.CONTENT_URI, cv); 
setContentView(R.layout.main); 

Le code s'exécute avec succès, mais il semble que cela ne fonctionne pas. Quelqu'un peut-il me signaler mon erreur? sortie Logcat:

I/Database(14340): sqlite returned: error code = 1, msg = table data has no column named display_name 
E/Database(14340): Error inserting display_name=jsmith data1=57457644 data4=44675475 data2=2 mimetype_id=5 raw_contact_id=400 
E/Database(14340): android.database.sqlite.SQLiteException: table data has no column named display_name: , while compiling: INSERT INTO data(display_name, data1, data4, data2, mimetype_id, raw_contact_id) VALUES(?, ?, ?, ?, ?, ?); 
E/Database(14340): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 
E/Database(14340): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92) 
E/Database(14340): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65) 
E/Database(14340): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83) 
E/Database(14340): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41) 
E/Database(14340): at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1157) 
E/Database(14340): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1577) 
E/Database(14340): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1434) 
E/Database(14340): at com.android.providers.contacts.ContactsProvider2$DataRowHandler.insert(ContactsProvider2.java:1032) 
E/Database(14340): at com.android.providers.contacts.ContactsProvider2$CommonDataRowHandler.insert(ContactsProvider2.java:1388) 
E/Database(14340): at com.android.providers.contacts.ContactsProvider2$PhoneDataRowHandler.insert(ContactsProvider2.java:1638) 
E/Database(14340): at com.android.providers.contacts.ContactsProvider2.insertData(ContactsProvider2.java:2649) 
E/Database(14340): at com.android.providers.contacts.ContactsProvider2.insertInTransaction(ContactsProvider2.java:2478) 
E/Database(14340): at com.android.providers.contacts.SemcContactsProvider2.insertInTransaction(SemcContactsProvider2.java:851) 
E/Database(14340): at com.android.providers.contacts.SQLiteContentProvider.insert(SQLiteContentProvider.java:95) 
E/Database(14340): at com.android.providers.contacts.ContactsProvider2.insert(ContactsProvider2.java:2294) 
E/Database(14340): at com.android.providers.contacts.SemcContactsProvider2.insert(SemcContactsProvider2.java:778) 
E/Database(14340): at android.content.ContentProvider$Transport.insert(ContentProvider.java:198) 
E/Database(14340): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:146) 
E/Database(14340): at android.os.Binder.execTransact(Binder.java:324) 
E/Database(14340): at dalvik.system.NativeStart.run(Native Method) 
E/Database(14340): Error inserting min_match=4467547 normalized_number=44675475 data_id=-1 raw_contact_id=400 using INSERT OR REPLACE INTO phone_lookup(min_match, normalized_number, data_id, raw_contact_id) VALUES(?, ?, ?, ?); 
+0

ce que « ne fonctionne pas " veux dire? Qu'est-ce que dit Logcat? –

+0

essayez ceci ... cela va fonctionner ... je l'ai fait en utilisant cela: http: //stackoverflow.com/questions/4744187/how-to-add-new-contacts-in-android –

+0

excusez mon insouciance, je 'ai ajouté la sortie de logcat. – user1256821

Répondre

0

Vous accédez EditText w/o afficher au début que vous causer des problèmes donc modifier votre code dans ces sens --->

setContentView(R.layout.main);// put in the beginning of code 
ContentValues cv = new ContentValues(); 
EditText te1 = (EditText)findViewById(R.id.EditText1); 
EditText te2 = (EditText)findViewById(R.id.EditText2); 
cv.put(ContactsContract.Data.RAW_CONTACT_ID, 400); 
cv.put(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 
cv.put(ContactsContract.CommonDataKinds.Phone.NUMBER, te2.getText().toString()); 
cv.put(ContactsContract.CommonDataKinds.Phone.TYPE,ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE); 
cv.put(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, te1.getText().toString()); 
ContentResolver contentResolver = getContentResolver(); 
contentResolver.insert(ContactsContract.Data.CONTENT_URI, cv); 
+0

Merci pour votre réponse. Mais je suppose que votre hypothèse est incorrecte. J'ai deux mises en page dans mon application, et le contact peut être créé sur une deuxième mise en page. Après avoir appuyé sur le bouton «enregistrer», je l'amène à une première mise en page en utilisant le code ci-dessus. – user1256821

+0

Selon votre pile de journaux, vous devriez revérifier votre requête sqlite: insert (une avec la table «data»). Pourriez-vous poster votre requête d'insertion ici, donc peut-être que je peux rectifier. –

Questions connexes