ContentProvider
2016-03-15 19:26
661 查看
URI:统一资源标识符
A: 前缀表明数据受控于一个内容提供者。它从不修改,也就是schema
B: 是指在AndroidManifest.xml中我们注册的provider中的android:authorities属性所对应的
C: 具体操作于哪个条目
D: 具体指定到哪个条目下的哪条记录(#表示通配符)
MainActivity
Person(实体类)
权限
自定义Contentprovider?
转载于:http://www.imooc.com/learn/179
A: 前缀表明数据受控于一个内容提供者。它从不修改,也就是schema
B: 是指在AndroidManifest.xml中我们注册的provider中的android:authorities属性所对应的
C: 具体操作于哪个条目
D: 具体指定到哪个条目下的哪条记录(#表示通配符)
MainActivity
package com.example.day0315; import java.net.URI; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.CommonDataKinds.StructuredName; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Data; import android.provider.ContactsContract.RawContacts; import android.util.Log; public class MainActivity extends Activity { private String TAG = "MainActivity"; private List<Person> persons = new ArrayList<Person>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); query(); insert(); } //插入一条联系人 private void insert() { ContentResolver cr = getContentResolver(); ContentValues cv = new ContentValues(); Uri uri = cr.insert(RawContacts.CONTENT_URI, cv); Long raw_content_id = ContentUris.parseId(uri); cv.clear(); //插入联系人 cv.put(StructuredName.RAW_CONTACT_ID, raw_content_id); cv.put(StructuredName.DISPLAY_NAME, "神秘超人223"); cv.put(StructuredName.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); uri = cr.insert(Data.CONTENT_URI, cv); //插入电话 cv.clear(); cv.put(Phone.RAW_CONTACT_ID, raw_content_id); cv.put(Phone.NUMBER, "2333333333"); cv.put(Phone.MIMETYPE, Phone.CONTENT_ITEM_TYPE); uri = cr.insert(Data.CONTENT_URI, cv); } //查询联系人的ID,姓名,电话 private void query() { ContentResolver cr = getContentResolver(); // 查询联系人 Cursor c = cr.query(Contacts.CONTENT_URI, new String[] { Contacts._ID,Contacts.DISPLAY_NAME }, null, null, null); Person person = null; while (c.moveToNext()) { int _id = c.getInt(c.getColumnIndex(Contacts._ID)); String display_name = c.getString(c.getColumnIndex(Contacts.DISPLAY_NAME)); String phone = "没有电话"; //根据联系人ID来查看电话号码 Cursor c1 = cr.query(Phone.CONTENT_URI,new String[] { Phone.NUMBER },Phone.CONTACT_ID + "=" + _id, null, null); if (c1.moveToNext()) { phone = c1.getString(c1.getColumnIndex(Phone.NUMBER)); } person = new Person(_id, display_name, phone); persons.add(person); c1.close(); } c.close(); //打印信息 for (Person p : persons) { Log.v(TAG, p.toString()); } } }
Person(实体类)
private int _id; private String display_name; private String phone;
权限
<!--读取权限 --> <uses-permission android:name="android.permission.READ_CONTACTS"/> <!--写入权限 --> <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
自定义Contentprovider?
package com.example.day0315; import android.content.ContentProvider; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; public class MyContentProvicer extends ContentProvider{ //在ContentProvider被创建后调用 @Override public boolean onCreate() { // TODO Auto-generated method stub return false; } //根据URI查询出selection指定条件所匹配的全部记录,并可以指定排序方式(Order) @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // TODO Auto-generated method stub return null; } //返回当前URI的MIME类型 //如果该URI对应的数据可能包括多条记录,那么MIME类型字符串就是以vnd.android.dir/开头 //如果该URI对应的数据只有一条数据,该MIME类型字符串就是以 vnd.android.cursor.item/开头 @Override public String getType(Uri uri) { // TODO Auto-generated method stub return null; } //根据URI插入values @Override public Uri insert(Uri uri, ContentValues values) { // TODO Auto-generated method stub return null; } //根据URI删除selection指定条件所匹配的全部记录 @Override public int delete(Uri uri, String selection, String[] selectionArgs) { // TODO Auto-generated method stub return 0; } //根据URI修改selection指定的条件所匹配的全部记录 @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { // TODO Auto-generated method stub return 0; } }
转载于:http://www.imooc.com/learn/179
相关文章推荐
- 比较好用的PHP防注入漏洞过滤函数代码
- yii2后台上传图片,前台也能显示 的方法
- yii2.0 的数据的 查 删
- thinkphp 使用cli方式刷脚本
- vsftpd.conf文件说明
- PHPUnit单元测试
- PHP7.0新增功能详解
- PHP中常量的定义
- yii2.0 的数据的 改
- 安卓第十四天笔记-内容提供者(ContentProvider)
- PHP中Heredoc结构形式
- PHP上传文件大小限制解决方案
- onethink搭建
- phpstorm小总结
- PHP 返回近7天 本月 上月日期
- yii2.0 的数据的 增
- /ThinkPHP/Library/Think/Storage/Driver/File.class.php LINE: 48
- PHP 快速排序法
- 1 #安装php
- ThinkPHP之add、save无法添加、修改的解决方案