第五周Android实习笔记
2016-04-03 10:35
645 查看
四大组件
1.ContentProvider
如何实现ContentProvide
1继承抽象类ContentProvide实现增删改查等方法
2.在AndroidManifest.xml中完成对COntentProvide的注册
URI:
如何解析URI:
要操作ContentProvider数据需要使用到ContentResolver:
利用ContentProvider查询联系人实例:
注:使用系统提供的ContentProvider可以增删改查联系人,短信的读取,通话记录,多媒体等等信息,而自定义实现的ContentProvider就比较复杂。
1.ContentProvider
如何实现ContentProvide
1继承抽象类ContentProvide实现增删改查等方法
2.在AndroidManifest.xml中完成对COntentProvide的注册
public class MyContentProvider extends ContentProvider{ //比如你实现了增和删 @Override//根据Uri删除selection指定的条件所匹配的全部记录 public int delete(Uri uri, String selection, String[] selectionArgs) { // TODO Auto-generated method stub return 0; } @Override//返回当前uri的MIME类型,如果该URI对应的数据可能包括多条记录 //那么MIME类型字符串 就是以vnd.android.dir/开头 // 如果该URI对应的数据只有一条记录 该MIME类型字符串 就是以vnd.android.cursor.item/开头 public String getType(Uri uri) { // TODO Auto-generated method stub return null; } @Override//根据Uri插入Values对应的数据 public Uri insert(Uri uri, ContentValues values) { // TODO Auto-generated method stub return null; } @Override//在ContetnProvider创建后被调用 public boolean onCreate() { // TODO Auto-generated method stub return false; } @Override//根据uri查询出selection指定的条件所匹配的全部记录,并且可以指定查询哪些列 以什么方式(order)排序 public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // TODO Auto-generated method stub return null; } @Override//根据uri修改selection指定的条件所匹配的全部记录 public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { // TODO Auto-generated method stub return 0; } }
URI:
如何解析URI:
要操作ContentProvider数据需要使用到ContentResolver:
利用ContentProvider查询联系人实例:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ContentResolver cr = getContentResolver(); Cursor c = cr.query(Contacts.CONTENT_URI, new String[] { Contacts._ID, Contacts.DISPLAY_NAME }, null, null, null); if (c != null) { while (c.moveToNext()) { int id = c.getInt(c.getColumnIndex("_id")); Log.i("info", "_id:" + id); Log.i("info", "name:" + c.getString(c.getColumnIndex("display_name"))); Cursor c1 = cr.query(Phone.CONTENT_URI, new String[] { Phone.NUMBER, Phone.TYPE }, Phone.CONTACT_ID + "=" + id, null, null); // 根据联系人ID查询出联系人的电话号码 if (c1 != null) { while (c1.moveToNext()) { int type = c1.getInt(c1.getColumnIndex(Phone.TYPE)); if (type == Phone.TYPE_HOME) { Log.i("info", "家庭电话:" + c1.getString(c1 .getColumnIndex(Phone.NUMBER))); } else if (type == Phone.TYPE_MOBILE) { Log.i("info", "手机:" + c1.getString(c1 .getColumnIndex(Phone.NUMBER))); } } c1.close(); } // 根据联系人的ID去查询出联系人的邮箱地址 Cursor c2 = cr.query(Email.CONTENT_URI, new String[] { Email.DATA, Email.TYPE }, Email.CONTACT_ID + "=" + id, null, null); if (c2 != null) { while (c2.moveToNext()) { int type = c2.getInt(c2.getColumnIndex(Email.DATA)); if (type == Email.TYPE_WORK) { Log.i("info", "工作邮箱:" + c2.getString(c2 .getColumnIndex(Email.DATA))); } } c2.close(); } } c.close(); } } }
注:使用系统提供的ContentProvider可以增删改查联系人,短信的读取,通话记录,多媒体等等信息,而自定义实现的ContentProvider就比较复杂。
相关文章推荐
- [android] soundpool简介
- 7.3 Android Framework - PropertyAnimation
- [Android]活动的启动模式
- Android高性能ORM数据库DBFlow入门教程
- Android多级树形菜单并且支持多选功能
- android MediaCodec 音频编解码的实现——转码
- 7.3 Android Framework - LayoutAnimation
- 海康威视Android SDK,并非萤石Android SDK
- Android开发中Handler的经典总结
- Android做一个显示电量的小控件
- android Java 提交数据到服务器的两种方式中四种方法
- 7.2 Android Framework - FrameAnimation
- 7.1 Android Framework - ViewAnimation
- Android签名相关知识整理
- android 自己定义组合控件
- Android 第九天重置版_Contentprovider_注意事项
- Android推送技术研究
- Android 第九天重置版_Contentprovider
- android studio快捷键
- Android 光线传感器的调用