android 创建联系人app,可以获取系统的联系人,并实现增删改查详解
时间: 2023-11-07 08:02:42 浏览: 89
在Android上创建联系人应用程序可以通过使用系统提供的内容提供者来获取和操作系统联系人。首先,需要添加相关的权限,如读取联系人数据的权限和写入联系人数据的权限。
要获取系统联系人,可以使用ContentResolver类的query()方法来查询联系人的信息。具体可以通过ContactsContract类中的常量来指定查询的字段的名称,如DISPLAY_NAME、PHONE_NUMBER等。通过将查询结果放入Cursor对象中,可以遍历并获取每个联系人的信息。
要实现增加联系人的功能,可以使用ContentResolver类的insert()方法,将联系人的姓名和电话号码等信息插入到系统联系人数据库中。
要实现删除联系人的功能,可以使用ContentResolver类的delete()方法,通过指定联系人ID来删除相应的联系人。
要实现修改联系人的功能,可以使用ContentResolver类的update()方法,通过指定联系人ID来更新相应的联系人信息。
最后,要实现查询联系人的功能,可以使用ContentResolver类的query()方法,通过指定查询条件,如姓名或电话号码,来获取特定联系人的信息。
在应用程序中,可以通过使用相关的界面组件,如ListView或RecyclerView来展示联系人列表。当用户点击某个联系人时,可以弹出对话框或跳转到新的界面,以实现添加、删除或修改联系人的操作。
需要注意的是,访问系统联系人的权限要求在AndroidManifest.xml文件中进行声明,并在运行时进行动态权限申请,以确保能够正常访问系统联系人数据。
相关问题
Android设计app实现增删改查代码
好的,以下是一个简单的示例代码,演示如何在Android应用程序中实现增删改查功能:
1. 创建数据库
```java
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "my_database";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(
"CREATE TABLE my_table ("
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "name TEXT, "
+ "age INTEGER)"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS my_table");
onCreate(db);
}
}
```
2. 创建数据模型
```java
public class Person {
private long id;
private String name;
private int age;
public Person() {
}
public Person(long id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
```
3. 创建增删改查操作
```java
public class PersonDAO {
private SQLiteDatabase db;
public PersonDAO(Context context) {
DatabaseHelper dbHelper = new DatabaseHelper(context);
db = dbHelper.getWritableDatabase();
}
public void addPerson(Person person) {
ContentValues values = new ContentValues();
values.put("name", person.getName());
values.put("age", person.getAge());
db.insert("my_table", null, values);
}
public void deletePerson(long id) {
db.delete("my_table", "_id=?", new String[] { String.valueOf(id) });
}
public void updatePerson(Person person) {
ContentValues values = new ContentValues();
values.put("name", person.getName());
values.put("age", person.getAge());
db.update("my_table", values, "_id=?", new String[] { String.valueOf(person.getId()) });
}
public List<Person> getAllPersons() {
List<Person> list = new ArrayList<>();
Cursor cursor = db.rawQuery("SELECT * FROM my_table", null);
while (cursor.moveToNext()) {
long id = cursor.getLong(cursor.getColumnIndex("_id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
list.add(new Person(id, name, age));
}
cursor.close();
return list;
}
public Person getPerson(long id) {
Cursor cursor = db.rawQuery("SELECT * FROM my_table WHERE _id=?", new String[] { String.valueOf(id) });
if (cursor.moveToFirst()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
return new Person(id, name, age);
}
cursor.close();
return null;
}
}
```
4. 创建用户界面
这里我们使用RecyclerView来展示所有数据。
```java
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private PersonAdapter adapter;
private PersonDAO personDAO;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new PersonAdapter();
recyclerView.setAdapter(adapter);
personDAO = new PersonDAO(this);
findViewById(R.id.button_add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Person person = new Person();
person.setName("John");
person.setAge(30);
personDAO.addPerson(person);
adapter.updateData(personDAO.getAllPersons());
}
});
findViewById(R.id.button_update).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Person person = personDAO.getPerson(1);
if (person != null) {
person.setName("Peter");
person.setAge(25);
personDAO.updatePerson(person);
adapter.updateData(personDAO.getAllPersons());
}
}
});
findViewById(R.id.button_delete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
personDAO.deletePerson(1);
adapter.updateData(personDAO.getAllPersons());
}
});
adapter.updateData(personDAO.getAllPersons());
}
private class PersonAdapter extends RecyclerView.Adapter<PersonViewHolder> {
private List<Person> list = new ArrayList<>();
public void updateData(List<Person> list) {
this.list = list;
notifyDataSetChanged();
}
@NonNull
@Override
public PersonViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_person, parent, false);
return new PersonViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull PersonViewHolder holder, int position) {
Person person = list.get(position);
holder.nameTextView.setText(person.getName());
holder.ageTextView.setText(String.valueOf(person.getAge()));
}
@Override
public int getItemCount() {
return list.size();
}
}
private static class PersonViewHolder extends RecyclerView.ViewHolder {
TextView nameTextView;
TextView ageTextView;
public PersonViewHolder(@NonNull View itemView) {
super(itemView);
nameTextView = itemView.findViewById(R.id.text_view_name);
ageTextView = itemView.findViewById(R.id.text_view_age);
}
}
}
```
这里我们需要创建一个item_person.xml文件来定义RecyclerView的item布局。
```xml
<!-- item_person.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp">
<TextView
android:id="@+id/text_view_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp" />
<TextView
android:id="@+id/text_view_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:textSize="18sp" />
</LinearLayout>
```
综上所述,以上代码演示了如何在Android中实现增删改查功能。当用户点击添加、修改、删除按钮时,应用程序将执行相应的操作,并且RecyclerView将更新以显示最新的数据。
android studio实现每日一图功能和增删改查功能app
当然,我很乐意为您提供有关如何实现每日一图功能和增删改查 (CRUD) 功能的 Android Studio 应用程序的说明。
## 每日一图功能
1. 在项目的 `res` 目录下创建一个名为 `drawable` 的文件夹。
2. 将您想要使用的图片添加到 `drawable` 文件夹中。
3. 在您的应用程序布局中添加一个 `ImageView` 控件,用于显示每日一图。
4. 在您的代码中,可以使用 `Random` 类随机选择一个图片,然后将其设置为 `ImageView` 的资源。
以下是一个简单的代码示例:
```java
public class MainActivity extends AppCompatActivity {
private ImageView imageView;
private int[] images = {
R.drawable.image1,
R.drawable.image2,
R.drawable.image3,
R.drawable.image4,
R.drawable.image5
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.image_view);
Random random = new Random();
int randomIndex = random.nextInt(images.length);
int imageResource = images[randomIndex];
imageView.setImageResource(imageResource);
}
}
```
## 增删改查功能
1. 创建一个数据库帮助程序类,该类继承自 `SQLiteOpenHelper` 类。在 `onCreate()` 方法中,您可以创建您的数据库和表。
2. 定义数据模型类,该类映射到数据库中的表。
3. 创建一个 DAO (数据访问对象) 类,用于执行数据库操作。
4. 在您的应用程序布局中添加适当的 UI 元素,例如文本框、按钮等。
5. 在您的代码中,您可以使用 DAO 类执行各种 CRUD 操作。
以下是一个简单的代码示例:
```java
public class MainActivity extends AppCompatActivity {
private EditText nameEditText;
private EditText emailEditText;
private Button saveButton;
private Button updateButton;
private Button deleteButton;
private UserDao userDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nameEditText = findViewById(R.id.name_edit_text);
emailEditText = findViewById(R.id.email_edit_text);
saveButton = findViewById(R.id.save_button);
updateButton = findViewById(R.id.update_button);
deleteButton = findViewById(R.id.delete_button);
UserDatabase userDatabase = UserDatabase.getInstance(this);
userDao = userDatabase.userDao();
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = nameEditText.getText().toString();
String email = emailEditText.getText().toString();
User user = new User(name, email);
userDao.insert(user);
}
});
updateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = nameEditText.getText().toString();
String email = emailEditText.getText().toString();
User user = new User(name, email);
userDao.update(user);
}
});
deleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = nameEditText.getText().toString();
userDao.deleteByName(name);
}
});
}
}
```
这只是一个简单的示例,您可以根据需要进行更改和扩展,以实现更复杂的 CRUD 操作。