zoukankan      html  css  js  c++  java
  • Android中ContentProvider的简单使用

    1、新建继承ContentProvider的类

    package com.wangzhu.demo;
    
    import android.content.ContentProvider;
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.net.Uri;
    
    public class MyContentProvider extends ContentProvider {
    
        /**
         * ContentProvider的数据访问路径
         */
        public static final Uri URI = Uri.parse("content://com.wangzhu.provider");
    
        private SQLiteDatabase database;
    
        @Override
        public int delete(Uri arg0, String arg1, String[] arg2) {
            return 0;
        }
    
        @Override
        public String getType(Uri arg0) {
            return null;
        }
    
        @Override
        public Uri insert(Uri uri, ContentValues values) {
            database.insert("tab", "_id", values);
            return null;
        }
    
        @Override
        public boolean onCreate() {
            database = getContext().openOrCreateDatabase("myProvider.db3",
                    Context.MODE_PRIVATE, null);
            database.execSQL("create table IF NOT EXISTS tab(_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL)");
            return true;
        }
    
        @Override
        public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3,
                String arg4) {
            Cursor cursor = database.query("tab", null, null, null, null, null,
                    null);
            return cursor;
        }
    
        @Override
        public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) {
            return 0;
        }
    
    }

    2、在AndroidManifest.xml中为应用程序添加ContentProvider的访问权限

            <!-- android:exported设置为true,表示其他应用可以访问,否则不可以访问 -->
            <provider
                android:name="MyContentProvider"
                android:authorities="com.wangzhu.provider"
                android:exported="true" >
            </provider>

    3、进行插入与查询

            final Uri uri = MyContentProvider.URI;
    
        /**
         * 往Provider中写入数据
         */
        protected void write() {
            //使用getContentResolver()方法获取ContentResolver对象
            ContentResolver resolver = getContentResolver();
            ContentValues values = null;
    
            values = new ContentValues();
            values.put("name", "Java");
            //调用ContentResolver对象的insert方法,插入数据
            resolver.insert(uri, values);
    
            values = new ContentValues();
            values.put("name", "Swift");
            resolver.insert(uri, values);
    
            values = new ContentValues();
            values.put("name", "Python");
            resolver.insert(uri, values);
    
            values = new ContentValues();
            values.put("name", "C#");
            resolver.insert(uri, values);
    
        }
    
        /**
         * 读取Provider中的内容
         */
        protected void read() {
            StringBuilder accum = new StringBuilder();
    
            //使用getContentResolver()方法获取ContentResolver对象
            //调用ContentResolver对象的query方法,查询数据,返回Cursor对象
            Cursor cursor = getContentResolver().query(uri, null, null, null, null);
            cursor.moveToFirst();
            for (int i = 0, count = cursor.getCount(); i < count; i++) {
                accum.append(cursor.getString(cursor.getColumnIndex("name")))
                        .append("
    ");
                cursor.moveToNext();
            }
            System.err.println("read: " + accum);
        }
  • 相关阅读:
    LeetCode24-Swap_Pairs
    LeeCode
    LeetCode3-Longest_Substring_Without_Repeating_Characters
    治愈 JavaScript 疲态的学习计划【转载】
    前端冷知识集锦[转载]
    知道这20个正则表达式,能让你少写1,000行代码[转载]
    关于简历和面试【整理自知乎】
    正念冥想方法
    一些职场经验【转载自知乎】
    犹太复国计划向世界展现了一个不一样的民族——观《犹太复国血泪史》有感
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/4101620.html
Copyright © 2011-2022 走看看