Android Content Provider内容提供者详解
Posted 路 宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Content Provider内容提供者详解相关的知识,希望对你有一定的参考价值。
Content Provider 内容提供者:可以实现在不同程序之间数据共享的功能,同时还能够保证被访问的数据的安全性。
两个重要知识点:
1.数据模型: Conent Provider使用基于数据模型的简单表格来提供其中的数据。 每一行代表一条记录,每一列代表特定类型,和含义的数据
2. URI :统一资源标识符,比较笼统的定位了资源,不局限于客户端和服务器
结构如下:
接下来我们通过Content Provider 读取通讯录中所有的联系人姓名:
布局代码就不贴出来了。
主要是Activity代码:
详细注解已经在代码中给出
public class ContentProviderActivity extends AppCompatActivity {
private TextView tv_phone;
private String name = ContactsContract.Contacts.DISPLAY_NAME;//获得通讯录中的姓名
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content_provider);
tv_phone = findViewById(R.id.tv_phone);
//显示获取的通讯录信息
tv_phone.setText(getQueryData());
}
private CharSequence getQueryData(){
//用于保存获取的联系人姓名
StringBuilder stringBuilder = new StringBuilder();
ContentResolver resolver = getContentResolver();
//通过通讯录进行查询
Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);
//获得姓名记录的索引值
int displayNameIndex = cursor.getColumnIndex(name);
for (cursor.moveToFirst(); !cursor.isAfterLast() ; cursor.moveToNext()) {
String display = cursor.getString(displayNameIndex);
stringBuilder.append(display+"\\n");
}
cursor.close();
//返回查询的结果
return stringBuilder.toString();
}
}
从通讯录中便获取到了联系人姓名:
以上是关于Android Content Provider内容提供者详解的主要内容,如果未能解决你的问题,请参考以下文章
Android???????????????Content Provider
Android官方文档之Creating a Content Provider