美文网首页
内容提供者

内容提供者

作者: HOLLE_karry | 来源:发表于2020-03-27 10:39 被阅读0次

1.ContentProvider

①创建一个数据库及一张表
②自定义ContentProvider继承自ContentProvider,重写方法6个方法(OnCreate,getType,增,删,改,查)

2.ContentResolver

①获取ContentResolver
②获取uri:Uri.parse("content://"+authorities+/+path)

Uri  uri = Uri.parse("content://com.anfly.contentproviderr.ClContentProvider/cl");

3.通过内容解析者读取通讯录信息

①动态获取危险权限
②获取ContentResolver对象contentResolver
③contentResolver调用query()方法查询相关内容
短信:Telephony.Sms.CONTENT_URI
通讯录:ContactsContract.CommonDataKinds.Phone.CONTENT_URI
图片:MediaStore.Images.Media.EXTERNAL_CONTENT_URI
音频:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
视频:MediaStore.Video.Media.EXTERNAL_CONTENT_URI

ContactsContract.CommonDataKinds.Phone.CONTENT_URI 电话号码的Uri  
/**
 * 获取通讯录的数据
*/
private void initContacts() {
// 内容解析者
   Cursor query = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
   StringBuilder stringBuilder = new StringBuilder();
   while (query.moveToNext()) {
   String name = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
   String phoneNumber = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
         stringBuilder.append(name + "--" + phoneNumber);
   }
        Log.d(TAG, "initContacts: ");
        mResult.setText(stringBuilder.toString());
}

4.通过内容解析者读取短息信息

public void initSms(){
    // 短信的URI 地址要牢记
    Cursor query = getContentResolver().query(Telephony.Sms.CONTENT_URI, null, null, null, null);
    while (query.moveToNext()){
                    // 短信的关键字段  地址,内容,日期
        String address = query.getString(query.getColumnIndex(Telephony.Sms.ADDRESS));
        String body = query.getString(query.getColumnIndex(Telephony.Sms.BODY));
        String data = query.getString(query.getColumnIndex(Telephony.Sms.DATE));
        Log.d(TAG, "initSms: ="+address+"--boy="+body+"==="+data);
    }
}

5.通过内容解析者读取图片

private void initIMage() {
    //  media.Image  audio  video
    Cursor query = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
    StringBuilder stringBuilder = new StringBuilder();
    while (query.moveToNext()){
        String name = query.getString(query.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
        String data = query.getString(query.getColumnIndex(MediaStore.Images.Media.DATA));
        stringBuilder.append(name+"=="+data+"\n");
    }
    mResult.setText(stringBuilder.toString());
}

相关文章

  • 内容提供者

    1.ContentProvider ①创建一个数据库及一张表②自定义ContentProvider继承自Conte...

  • Android ContentProvider

    第七章 内容提供者 内容提供者主要用在不同应用程序之间实现数据共享。 内容提供者用法一般有两种: 一、访问其他应用...

  • ContentProvider

    内容提供者 应用的数据库是不允许其他应用访问的 内容提供者的作用就是让别的应用访问到你的数据库 自定义内容提供者,...

  • 内容提供者(ContentProvider)

    Android的四大组件之一,也是最后一个学习的四大组件,ContentProvider的作用是将Android程...

  • ContentProvider(内容提供者)

    作用:进程间通讯;提供接口给其它应用调用,包括数据的添删改查。所需储备:UriMatcherr 类主要用于匹配Ur...

  • 内容提供者(ContentProvider)

    ContentProvider是Android四大组件中唯一不需要使用Intent来启动的组件 一般来说,应用的私...

  • ContentProvider(内容提供者)

    ContentProvider(内容提供者) 适用场景 ContentProvider为存储和读取数据提供了统一的...

  • Android内容提供者

    1.什么是ContentProvider 首先,ContentProvider(内容提供者)是android中的四...

  • ContentProvider(内容提供者)

    1)简单的读取收件箱信息: 别忘了,往AndroidManifest.xml加入读取收件箱的权限: 2)简单的往收...

  • Android四大组件简单理解——内容提供者(content p

    一、内容提供者(content provider):是Android四大组件之一,内容提供者是应用程序之间共享数据...

网友评论

      本文标题:内容提供者

      本文链接:https://www.haomeiwen.com/subject/rvzkuhtx.html