ContentProvider内容提供者

ContentProvider重点:

权限必须在清单文件中写

ContentProvider:内容提供者
ContentResolver:内容解析者
Uri:地址

图库Uri:MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
短信:Telephony.Sms.CONTENT_URI;
联系人:ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
音频: MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
视频:MediaStore.Video.Media.EXTERNAL_CONTENT_URI;

内容解析者

读系统的文件要写读SD卡权限:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!--读SD卡-->
 //读图库
    @RequiresApi(api = Build.VERSION_CODES.O)
    private void readPicture() {
        ContentResolver resolver = getContentResolver();
        //读图片的uri
        Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;


        Cursor cursor = resolver.query(uri, null, null, null,null);

        final List<Map<String,Object>> lists=new ArrayList<>();
        while (cursor.moveToNext()) {
            String string = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.TITLE));
            String data = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));

            HashMap<String, Object> map = new HashMap<>();

            map.put("title",string);
            map.put("data",data);
            lists.add(map);

        }
        MyPirctureAdapter myPirctureAdapter = new MyPirctureAdapter(lists, this);
        listView.setAdapter(myPirctureAdapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {


            }
        });
    }

读联系人权限:

    <uses-permission android:name="android.permission.READ_CONTACTSD"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>     <!--读联系人-->
    

字段:ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME:姓名
ContactsContract.CommonDataKinds.Phone.NUMBER:电话
“phonebook_label”

private void readUser() {
        //获得ContextResolver
        ContentResolver resolver = getContentResolver();
        //确定url和要查询的字段
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        //联系人,手机号
        String[] strings={ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER,"phonebook_label"
        };
        //执行查询并将结果遍历展现在listview中和存储到本地的数据库中
        Cursor cursor = resolver.query(uri, strings, null, null, null);

        list = new ArrayList<>();
        while (cursor.moveToNext()) {
            String phonebook_label = cursor.getString(cursor.getColumnIndex("phonebook_label"));
            String s = phonebook_label + cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            HashMap<String, Object> map = new HashMap<>();
            map.put("name",s);
            map.put("phonenum",number);
            list.add(map);
        }
        MyAdapter myAdapter = new MyAdapter(list, this);

        listView.setAdapter(myAdapter);
    }

读短信权限:

    <uses-permission android:name="android.permission.READ_SMS"/>
    <uses-permission android:name="android.permission.WRITE_SMS"/><!--读短信-->

字段:Telephony.Sms.BODY,
Telephony.Sms.ADDRESS,

 @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    private void readMessage() {
        ContentResolver contentResolver = getContentResolver();
        Uri uri = Telephony.Sms.CONTENT_URI;
        String[] strings={
                Telephony.Sms.BODY,
                Telephony.Sms.ADDRESS,
        };

        Cursor cursor = contentResolver.query(uri, strings, null, null, null);

        //存到listview中,存到数据库中
        List<Msm> lists=new ArrayList<>();

        while (cursor.moveToNext()) {
            String string = cursor.getString(cursor.getColumnIndex(Telephony.Sms.ADDRESS));
            String string1 = cursor.getString(cursor.getColumnIndex(Telephony.Sms.BODY));
            lists.add(new Msm(string,string1));

        }
        MyAdapter2 myAdapter2 = new MyAdapter2(lists, this);
        listView.setAdapter(myAdapter2);

    }

Msm类:

class Msm {
    private String address;
    private String body;

    public Msm() {
        super();
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public Msm(String address, String body) {
        this.address = address;
        this.body = body;
    }

    @Override
    public String toString() {
        return "Msm{" +
                "address='" + address + '\'' +
                ", body='" + body + '\'' +
                '}';
    }

内容提供者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值