Android组件——ContentProvider
来源:互联网 发布:网络贷款不还会坐牢吗 编辑:程序博客网 时间:2024/05/30 23:05
内容提供器(ContentProvider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。当一个程序通过内容提供器对其数据提供了外部访问接口,任何其他的应用程序就都可以对这部分数据进行访问。Android系统中 自带的电话簿、短信、媒体库等程序都提供了类似的访问接口,这就使得第三方应用程序可以充分地利用这部分数据来实现更好的功能。
对于每一个应用程序来说,如果想要访问内容提供器中共享的数据,需要借助ContentResolve类,可以通过Context中的getContentResolve()方法获取到该类的实例。ContentResolve中的增删改查与数据库中基本类似,但是所有方法都不接受表名参数,而是使用一个Rri参数代替,这个参数的内容被称为内容URI。内容URI给内容提供器中的数据建立了唯一标示符,它主要由两部分组成,权限(authority)和路径(path)。权限是用于不同的应用程序作区分的,一般为了避免冲突,都会采用程序包名的方式来进行命名。路径则是用于对同一应用程序中不同的表作区分的,通常都会添加到权限的后边。
可以调用Uri.parse()方法将内容URI字符串解析成Uri对象了
Uri uri=Uri.parse(“content://pathname/tablename”)
package com.example.administrator.mycontentprovide;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.provider.ContactsContract;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity { private Button mButton_checkphone; private ContentResolver resolver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton_checkphone= (Button) findViewById(R.id.button_checkphone); mButton_checkphone.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { resolver=getContentResolver(); //得到电话联系人这个应用的URI,是使用Uri.parse()方法解析出来的结果 Uri uri= ContactsContract.CommonDataKinds.Phone.CONTENT_URI; //查询联系人 //ContactsContract.CommonDataKinds.Phone.NUMBER是电话号码的URI //ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME是联系人的URI Cursor cursor=resolver.query(uri,new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME},null,null,null); cursor.moveToFirst(); while(!cursor.isAfterLast()){ //得到联系人的姓名,其实也可以使用URI的方式来获取 String []names=cursor.getColumnNames(); StringBuffer buffer=new StringBuffer(); //得到联系人的电话号码 for (String name:names){ String value=cursor.getString(cursor.getColumnIndex(name)); buffer.append("字段名"+name+" 字段值"+value); } Log.d("联系人", ""+buffer); cursor.moveToNext(); } } }); }}
需要注意的是,访问系统联系人是需要访问权限的,所以再Manifest中添加一个权限声明
<uses-permission android:name="android.permission.READ_CONTACTS"/>
0 0
- Android组件——ContentProvider
- Android四大组件—ContentProvider
- Android四大组件—ContentProvider
- Android四大组件—ContentProvider
- Android——组件之ContentProvider
- Android四大组件——ContentProvider
- Android安卓——ContentProvider组件
- 四大组件 — ContentProvider
- 四大组件 — ContentProvider
- 四大组件 — ContentProvider
- 四大组件 — ContentProvider
- 四大组件 — ContentProvider
- Android基础——四大组件之ContentProvider
- Android四大组件——ContentProvider的用法.txt
- 从瓶颈到精通——Android四大组件:ContentProvider
- 四大组件——ContentProvider
- Android组件之ContentProvider
- Android之ContentProvider组件
- Android界面美化 -- 使用自定义Toast布局替代原生布局
- 开播第一篇先给这个经典案例
- MySQL学习----MySQL 连接和联合----16MySQL 自连接和联合
- log4j使用教程
- SVN安装---本机安装(1)
- Android组件——ContentProvider
- iOS开发脚踏实地学习day04-超级猜图
- Permutation Sequence
- 如何查看Eclipse的数字版的版本
- 欢迎使用CSDN-markdown编辑器
- GDI和GDI+的应用场合思考
- 爱与赤诚
- 你知道数据库索引的工作原理吗?
- 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。