Android 安卓添加联系人

Android 安卓添加联系人,android,Android,我正在尝试编写一个小应用程序,显示联系人并将其添加到android电话簿中。我通过以下方式添加联系人: 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

我正在尝试编写一个小应用程序,显示联系人并将其添加到android电话簿中。我通过以下方式添加联系人:

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);
代码执行成功,但看起来不起作用。有人能指出我的错误吗? 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(?, ?, ?, ?);
I/数据库(14340):sqlite返回:错误代码=1,msg=表数据没有名为display\u name的列
E/数据库(14340):插入显示\u name=jsmith data1=57457644 data4=44675475 data2=2 mimetype\u id=5 raw\u contact\u id=400时出错
E/Database(14340):android.Database.sqlite.SQLiteException:表数据没有名为display_name:的列,编译时:插入数据(display_name,data1,data4,data2,mimetype_id,raw_contact_id)值(?,,,,,,?);
E/Database(14340):位于android.Database.sqlite.SQLiteCompiledSql.native_compile(本机方法)
E/Database(14340):位于android.Database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
E/Database(14340):位于android.Database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:65)
E/Database(14340):位于android.Database.sqlite.SQLiteProgram.(SQLiteProgram.java:83)
E/Database(14340):位于android.Database.sqlite.SQLiteStatement.(SQLiteStatement.java:41)
E/Database(14340):位于android.Database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1157)
E/Database(14340):位于android.Database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1577)
E/Database(14340):位于android.Database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1434)
E/数据库(14340):位于com.android.providers.contacts.ContactsProvider2$DataRowHandler.insert(ContactsProvider2.java:1032)
E/数据库(14340):位于com.android.providers.contacts.ContactsProvider2$CommonDataRowHandler.insert(ContactsProvider2.java:1388)
E/数据库(14340):位于com.android.providers.contacts.ContactsProvider2$PhoneDataRowHandler.insert(ContactsProvider2.java:1638)
E/数据库(14340):位于com.android.providers.contacts.ContactsProvider2.insertData(ContactsProvider2.java:2649)
E/数据库(14340):位于com.android.providers.contacts.ContactsProvider2.insertInTransaction(ContactsProvider2.java:2478)
E/数据库(14340):位于com.android.providers.contacts.SemcContactsProvider2.insertInTransaction(SemcContactsProvider2.java:851)
E/Database(14340):位于com.android.providers.contacts.SQLiteContentProvider.insert(SQLiteContentProvider.java:95)
E/数据库(14340):位于com.android.providers.contacts.ContactsProvider2.insert(ContactsProvider2.java:2294)
E/数据库(14340):位于com.android.providers.contacts.SemcContactsProvider2.insert(SemcContactsProvider2.java:778)
E/数据库(14340):位于android.content.ContentProvider$Transport.insert(ContentProvider.java:198)
E/数据库(14340):位于android.content.ContentProviderNative.onTransact(ContentProviderNative.java:146)
E/数据库(14340):位于android.os.Binder.execTransact(Binder.java:324)
E/数据库(14340):位于dalvik.system.NativeStart.run(本机方法)
E/数据库(14340):使用INSERT或REPLACE插入或替换到手机查找(min_匹配、归一化_编号、数据_id、原始_联系人id)值(?,,?)插入min_匹配=4467547标准化_编号=44675475数据_id=-1原始_联系人_id=400时出错;

您正在访问EditText,但开头没有显示导致问题的内容 因此,请用以下方式修改您的代码--->


“不工作”是什么意思?logcat怎么说?试试这个。。。它会起作用的。。。我是这样做的:请原谅我的粗心,我添加了logcat输出。谢谢你的回答。但我猜你的假设是错误的。我的应用程序中有两个布局,可以在第二个布局上创建联系人。在用户按下“保存”按钮后,我使用上面的代码再次将他带到第一个布局,根据您的日志堆栈,它显示您应该重新检查sqlite:insert查询(一个名为“data”的表)。你能把你的问题贴在这里吗?这样我就可以纠正了。
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);