获取联系人并进行增删改查
db.execSQL(“create table diyige(id integer primary key autoincrement,name varchar(20),phone varchar(20))”);
首先创建一个类并继承 SQLiteOpenHelper创建表
一、ContentProvider内容提供者
1.ContentProvider内容提供者(四大组件之一)主要用于在不同的应用程序之间实现数据共享的功能。
2.技能get点:
(1)访问系统自带的内容提供者
手机联系人/音频/视频/图库/短信/系统设置
(2)自己写内容提供者
二、添加联系人存到数据库
1.添加获取联系人的权限
代码如下(示例):
<uses-permission android:name="android.permission.READ_CONTACTS" />
2.创建MyContentProvider
代码如下(示例):
public class MyContentProvider extends ContentProvider {
private SQLiteDatabase sqLiteDatabase;
public MyContentProvider() {
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int diyige = sqLiteDatabase.delete("diyige", selection, selectionArgs);
return diyige;
}
@Override
public String getType(Uri uri) {
// TODO: Implement this to handle requests for the MIME type of the data
// at the given URI.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public Uri insert(Uri uri, ContentValues values) {
sqLiteDatabase.insert("diyige",null,values);
return uri;
}
@Override
public boolean onCreate() {
MySQLit mySQLit = new MySQLit(getContext(), "awsl.db", null, 1);
sqLiteDatabase= mySQLit.getReadableDatabase();
if (sqLiteDatabase!=null){
return true;
}
return false;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Cursor diyige = sqLiteDatabase.query("diyige", projection, selection, selectionArgs, null, null, sortOrder);
return diyige;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
int diyige = sqLiteDatabase.update("diyige",values,selection,selectionArgs);
return diyige;
}
}
3…MainActivity
public class MainActivity extends AppCompatActivity {
SQLiteDatabase sqLiteDatabase;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode==100&&grantResults[0]==0){
Toast.makeText(this, "访问成功", Toast.LENGTH_SHORT).show();
ContentResolver contentResolver = getContentResolver();
Cursor query = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
if (query!=null){
while (query.moveToNext()){
String name = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phone = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
sqLiteDatabase.execSQL("insert into diyige values(null,?,?)",new Object[]{name,phone});
}
}
query.close();
}else {
finish();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},100);
MySQLit mySQLit = new MySQLit(this, "awsl.db", null, 1);
sqLiteDatabase = mySQLit.getReadableDatabase();
}
}
三…内容索要方代码
public class MainActivity extends AppCompatActivity {
private Uri uri;
private List<User> list;
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
uri = Uri.parse("content://com.li111");
final ContentResolver contentResolver = getContentResolver();
Cursor query = contentResolver.query(uri, null, null, null, null);
if (query!=null){
list=new ArrayList<>();
while (query.moveToNext()) {
String id = query.getString(query.getColumnIndex("id"));
String name = query.getString(query.getColumnIndex("name"));
String phone = query.getString(query.getColumnIndex("phone"));
User user=new User(id,name,phone);
list.add(user);
}
query.close();
}
UserAdapter userAdapter = new UserAdapter(list,this);
lv.setAdapter(userAdapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
PopupWindow popupWindow = new PopupWindow();
popupWindow.setWidth(500);
popupWindow.setHeight(500);
popupWindow.setOutsideTouchable(true);
View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.item2, null);
popupWindow.setContentView(inflate);
popupWindow.showAsDropDown(view,0,-200);
Button dei= inflate.findViewById(R.id.dei);
dei.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String id1 = list.get(position).getId();
contentResolver.delete(uri,"id=?",new String[]{id1});
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
}
});
Button add= inflate.findViewById(R.id.add);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
Button update = inflate.findViewById(R.id.update);
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, updateActivity.class);
intent.putExtra("id",list.get(position).getId());
startActivity(intent);
}
});
}
});
}
private void initView() {
lv = (ListView) findViewById(R.id.lv);
}
}
1…创建User适配器继承BaseAdapter
public class UserAdapter extends BaseAdapter {
List<User> list;
Context context;
public UserAdapter(List<User> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
VievHolder vievHolder=new VievHolder();
if (convertView==null){
convertView= LayoutInflater.from(context).inflate(R.layout.item,null);
vievHolder.name=convertView.findViewById(R.id.name);
vievHolder.phone=convertView.findViewById(R.id.phone);
convertView.setTag(vievHolder);
}else {
vievHolder= (VievHolder) convertView.getTag();
}
vievHolder.name.setText(list.get(position).getName());
vievHolder.phone.setText(list.get(position).getPhone());
return convertView;
}
class VievHolder{
TextView name,phone;
}
}
2…点击item进行增删改
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
PopupWindow popupWindow = new PopupWindow();
popupWindow.setWidth(500);
popupWindow.setHeight(500);
popupWindow.setOutsideTouchable(true);
View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.item2, null);
popupWindow.setContentView(inflate);
popupWindow.showAsDropDown(view,0,-200);
Button dei= inflate.findViewById(R.id.dei);
dei.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String id1 = list.get(position).getId();
contentResolver.delete(uri,"id=?",new String[]{id1});
Intent intent = new Intent(MainActivity.this, MainActivity.class);
startActivity(intent);
}
});
Button add= inflate.findViewById(R.id.add);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
Button update = inflate.findViewById(R.id.update);
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, updateActivity.class);
intent.putExtra("id",list.get(position).getId());
startActivity(intent);
}
});
}
});
3…跳转到update进行修改操作
public class updateActivity extends AppCompatActivity {
EditText name,phone;
ContentResolver contentResolver;
String id;
Uri uri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);
name=findViewById(R.id.update_name);
phone=findViewById(R.id.update_phone);
Intent intent = getIntent();
id = intent.getStringExtra("id");
contentResolver = getContentResolver();
uri = Uri.parse("content://com.li111");
}
public void update(View view) {
ContentValues contentValues = new ContentValues();
contentValues.put("name",name.getText().toString());
contentValues.put("phone",phone.getText().toString());
contentResolver.update(uri,contentValues,"id=?",new String[]{id});
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
}
}
4…跳转到add进行添加操作
public class Main2Activity extends AppCompatActivity {
EditText name,phone;
private ContentResolver contentResolver;
private Uri uri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
name=findViewById(R.id.add_name);
phone=findViewById(R.id.add_phone);
uri = Uri.parse("content://com.li111");
contentResolver = getContentResolver();
}
public void add(View view) {
ContentValues contentValues = new ContentValues();
contentValues.put("name",name.getText().toString());
contentValues.put("phone",phone.getText().toString());
contentResolver.insert(uri,contentValues);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
}