美文网首页
Content Provider总结

Content Provider总结

作者: 冰薄荷汽水 | 来源:发表于2017-03-28 19:04 被阅读0次

    Content Provider是什么

    组件Content Provider是为了在不同应用程序之间进行数据交换的的标准API。比如,一个应用有一些数据,它可以允许别的应用来访问这些数据,那么它可以通过ContentProvider来暴露访问这些数据的接口,当别的应用想要访问这些数据时可以通过ContentResolver来操作,包括增删改查等等。

    Content Provider简单使用

    下面是一个简单的例子,我们可以通过ContentResolver内容解析者来访问系统里通讯录里面的联系人信息。

    1. 新建布局文件 layout_activity_cp.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:gravity="center"
                  android:orientation="vertical">
    
        <Button
            android:id="@+id/btn_read_contact"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="读取联系人数据"/>
    </LinearLayout>
    
    1. 新建Activity
    public class ContentProviderActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            //设置布局
            setContentView(R.layout.layout_activity_cp);
    
            //按钮点击事件
            Button btnReadContact = (Button) findViewById(R.id.btn_read_contact);
            btnReadContact.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    Cursor mCursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
                            null, null, null, null);
    
                    while (mCursor.moveToNext()) {
    
                        String name = mCursor.getString(mCursor.getColumnIndex
                                (ContactsContract.Contacts.DISPLAY_NAME));
    
                        Log.e("---contactname---", name);
    
                    }
    
                }
            });
    
        }
    }
    
    1. 清单文件 AndroidManifest.xml里添加读取联系人的权限,同时别忘了要注册Activity。
     <uses-permission android:name="android.permission.READ_CONTACTS"/>
    

    这样,运行后查看输出结果如下图所示:

    QinQin---XiaoMing
    

    Content Provider自定义

    步骤

    1. SQLite数据库表,用于存储数据。
    2. 创建一个继承自ContentProvider的子类,在其中完成数据操作。
    3. AndroidManifest.xml文件中声明provider
    4. 外部访问

    用法解析

    1. 创建数据库。这里用SQLite数据库保存数据。
    1
    1. 新建继承自ContentProvider的子类,完成基本操作。
    2 3
    1. 在清单文件里声明provider。
    3
    1. 数据访问
    4

    相关文章

      网友评论

          本文标题:Content Provider总结

          本文链接:https://www.haomeiwen.com/subject/gmcsottx.html