获取联系人并进行增删改查

获取联系人并进行增删改查


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);
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值