我是Android开发的新手。我正在尝试读取和写入android地址簿的联系人。
我尝试将以下代码行写入android
public class SecondApp extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ContentValues values = new ContentValues();
values.put(Contacts.People.NAME, "Rishabh");
ContentResolver cr = getContentResolver();
Uri uri = cr.insert(People.CONTENT_URI, values);
但我收到“应用程序意外停止。请再试一次”消息。
它有什么问题? 我如何访问android的联系人?
嗨MannyNS感谢您的回复 我已按照您的定义给予了写入权限。
但我仍然得到“应用程序已经意外停止。请再试一次”,即使我启动android它的消息“进程android.process media没有响应”。
你能建议我整个程序来读取和写入android的联系人吗? 你有任何示例代码吗?
由于 RISHABH
答案 0 :(得分:1)
ViewContact.java:
注意:getContacts()
是用户定义的函数
package com.android.ViewContact;
import android.app.Activity;
import android.os.Bundle;
import android.database.*;
import android.net.Uri;
import android.provider.ContactsContract;
import android.widget.TextView;
public class ViewContactAct extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView contactview=(TextView)findViewById(R.id.contactview);
Cursor mycursor=getContacts();
while(mycursor.moveToNext())
{
String displayname=mycursor.getString(mycursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
contactview.append("Name: ");
contactview.append(displayname);
contactview.append("\n");
}
}
private Cursor getContacts()
{
Uri myuri=ContactsContract.Contacts.CONTENT_URI;
String[] projection=new String[]
{
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
String selection= ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '"
+ ("1") + "'";
String[] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC";
return managedQuery(myuri, projection, selection, selectionArgs,
sortOrder);
}
}
答案 1 :(得分:0)
您缺少编写联系人的系统权限。 将此行添加到清单文件中:
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
如果您的代码必须阅读联系人,您的应用程序将需要“android.permission.READ_CONTACTS
”。
可以在Android reference pages上找到完整的权限标记。
答案 2 :(得分:0)
要阅读联系人,请使用以下代码:
main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:id="@+id/contactview"
/>
</LinearLayout>
在清单文件中添加以下条目:
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
上面给出了显示联系簿中联系人姓名的java代码: