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学习总结——Content Provider

6Android Content Provider测试

Android官方文档之Creating a Content Provider

Android开发学习之路--Content Provider之初体验

android - 没有 Content Provider 的 CursorLoader 和 SQLite