zoukankan      html  css  js  c++  java
  • Android四大组件之ContentProvider(学习笔记)

    ContentProvider
    程序通过uri访问数据
    继承contentprovider实现一系列对于数据的增删改查等方法,需在AndroidMainfest中完成对于ContentProvider的注册
      onCreate方法,在创建后被调用
      onDelete方法,根据Uri删除selection指定的条件所匹配的全部记录
      insert,根据uri插入Values对应的数据
      update,根据uri修改selection指定的条件所匹配的全部记录
      query,根据uri查询出selection指定的条件所匹配的全部记录,并且可以指定查询什么列,
      gettype返回当前uri的mime类型,如果该uri对应的数据可能包括的多条记录,那么mime类型的字符串,就是以vnd.android.dir/开头,如果该url对应的数据只有一条记录,该mime类型字符串,就是以vndAndroid.cursor.item/开头

    UriMatcher类
    uriMatcher matcher= new UriMatcher(UriMatcher.No_MATCH);
    UriMatcher.No_MATCH表示不匹配任何路径的返回码
    matcher.addURI("com.imooc.provider","music",1);
    往UriMatcher类里添加一个拼凑的Uri
    UriMatcher作为一个Uri的容器,容器里包含着我们即将要操作的Uri
    如果通过match方法匹配成功后就返回code值
    matcher.match(uri)
    首先找到通过addURI方法添加进来的Uri匹配
    匹配成功则返回设置的code值,反之,返回一个UriMatcher.NO_MATCH常量(-1)

    ContentResolver类

    外部应用通过ContentResolver类来对ContentProvider中的数据进行添加、删除、查询
    调用getContentResolver()方法来获取ContentResolver对象

    import android.content.ContentResolver;
    import android.content.ContentUris;
    import android.content.ContentValues;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.ContactsContract;
    import android.provider.ContactsContract.CommonDataKinds.StructuredName;
    import android.provider.ContactsContract.RawContacts;
    import android.provider.ContactsContract.CommonDataKinds.Phone;
    import android.support.v7.app.AppCompatActivity;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //在联系人中插入数据
              //获取ContentResolver对象,找到指定的ContentProvider,并获取ContentProvider的数据
            ContentResolver cr=getContentResolver();
            ContentValues contentValues=new ContentValues();
              //返回所要寻找文件的Uri
            Uri uri=cr.insert(RawContacts.CONTENT_URI,contentValues);
            Long raw_content_id= ContentUris.parseId(uri);
            contentValues.clear();
              //插入人名
            contentValues.put(StructuredName.RAW_CONTACT_ID,raw_content_id);
            contentValues.put(StructuredName.DISPLAY_NAME,"zhangsan");
            contentValues.put(StructuredName.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE);
            uri=cr.insert(ContactsContract.Data.CONTENT_URI,contentValues);
              //插入电话信息
            contentValues.clear();
            contentValues.put(Phone.RAW_CONTACT_ID,raw_content_id);
            contentValues.put(Phone.NUMBER,"1333333333");
            contentValues.put(Phone.MIMETYPE,Phone.CONTENT_ITEM_TYPE);
            uri=cr.insert(ContactsContract.Data.CONTENT_URI,contentValues);
    
        }
    }
  • 相关阅读:
    区间K 大数查询
    最大最小公倍数
    吃糖果
    身份证号码升级
    威威猫系列之 吃鸡腿
    小Q系列之失恋
    查询7天之内的数据
    WebService案例 Spring boot+CXF开发WebService Demo
    开发过程中遇到问题
    oracle 自增序列 sequence
  • 原文地址:https://www.cnblogs.com/edwardru/p/5985272.html
Copyright © 2011-2022 走看看