ContentProvider内容提供者 数据库工具类

本文详细介绍Android中ContentProvider的使用方法,包括访问系统自带内容提供者如联系人、音频、视频、图库和短信,以及如何自定义ContentProvider。同时,文章提供了数据库工具类的代码示例,帮助开发者更好地理解和运用ContentProvider进行跨应用数据共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、ContentProvider

a.ContentProvider介绍

1.ContentProvider内容提供者(四大组件之一)主要用于在不同的应用程序之间实现数据共享的功能。
2.技能get点:
(a)访问系统自带的内容提供者(******)
手机联系人/音频/视频/图库/短信/系统设置
(b)自己写内容提供者
3.注意:
Contentprovider:内容提供者
ConteneResolver:内容解析者
URL:地址

2、原理图

在这里插入图片描述

URI


1.获取音频: 		
(1)uri:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI 	
(2)字段:TITLE:歌名   ARTIST 歌手   DURATION 总时长  DATA 地址
String[] strs= new String[]{MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.ARTIST,MediaStore.Audio.Media.DURATION,MediaStore.Audio.Media.DATA};

2.获取视频: 		
(1)uri:MediaStore.Video.Media.EXTERNAL_CONTENT_URI 		
(2)字段:TITLE:歌名   ARTIST 歌手   DURATION 总时长  DATA 地址
String[] strs= new String[]{MediaStore.Video.Media.TITLE,MediaStore.Video.Media.ARTIST,MediaStore.Video.Media.DURATION,MediaStore.Video.Media.DATA};

3.获取图库: 		
(1)uri:MediaStore.Images.Media.EXTERNAL_CONTENT_URI 		
(2)字段:
MediaStore.Images.Media.TITLE;图片名称
MediaStore.Images.Media.SIZE;大小
MediaStore.Images.Media.DATA;地址

4.获取联系人: 		
(1)uri:ContactsContract.CommonDataKinds.Phone.CONTENT_URI 		
(2)字段:Phone.DISPLAY_NAME:姓名   NUMBER:电话 			
String[] strs= new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER};

5.获取短信: 		
(1)uriTelephony.Sms.CONTENT_URI 		
(2)字段:ADDRESS 地址   BODY 内容 			
String[] strs= new String[]{Telephony.Sms.ADDRESS,Telephony.Sms.BODY};
备注:1 2 3 读sd卡的权限    4 读联系人的权限   5 读短信的权限

数据库工具类

public class StudentDao {

    private Context con;
    private MySQLite mySQLite;
    private SQLiteDatabase database;
    private static final String TABLENAME = "student";//表名

    public StudentDao(Context con) {
        this.con = con;
        mySQLite = new MySQLite(con);
        database = mySQLite.getWritableDatabase();
    }

    //增加
    public boolean add(Student student){
        ContentValues values = new ContentValues();
        values.put("name",student.getName());
        values.put("age",student.getAge());
        values.put("height",student.getHeight());
        values.put("id",student.getId());
        long insert = database.insert(TABLENAME, null, values);
        if(insert>0){
            return true;
        }else{
            return false;
        }
    }

    //删除
    public int deleteBy_id(int id){
        int delete = database.delete(TABLENAME, "id=?", new String[]{id + ""});
        return delete;
    }
    //删除全部
    public int deleteAll(){
        int delete = database.delete(TABLENAME, null,null);
        return delete;
    }


    //修改
    public int updateBy_id(Student student,int id){
        ContentValues values = new ContentValues();
        values.put("name",student.getName());
        values.put("age",student.getAge());
        values.put("height",student.getHeight());
        values.put("id",student.getId());

        int update = database.update(TABLENAME, values, "id=?", new String[]{id + ""});
        return update;
    }

    //查询一个
    public ArrayList<Student> query(int id){
        ArrayList<Student> list = new ArrayList<>();
        Cursor query = database.query(TABLENAME, null, "id=?", new String[]{id + ""}, null, null, null);
        while(query.moveToNext()){
            String name = query.getString(query.getColumnIndex("name"));
            int age = query.getInt(query.getColumnIndex("age"));
            float height = query.getFloat(query.getColumnIndex("height"));
            int id1 = query.getInt(query.getColumnIndex("id"));
            Student student = new Student(name, age, height, id1);
            list.add(student);
        }
        return list;
    }

    //查询所有
    public ArrayList<Student> queryAll(){
        ArrayList<Student> list = new ArrayList<>();
        Cursor query = database.query(TABLENAME,  null, null, null, null, null,null);
        while(query.moveToNext()){
            String name = query.getString(query.getColumnIndex("name"));
            int age = query.getInt(query.getColumnIndex("age"));
            float height = query.getFloat(query.getColumnIndex("height"));
            int id1 = query.getInt(query.getColumnIndex("id"));
            Student student = new Student(name, age, height, id1);
            list.add(student);
        }
        return list;
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值