美文网首页
访问其他程序中的数据

访问其他程序中的数据

作者: TTTqiu | 来源:发表于2016-04-26 10:40 被阅读17次

    一、ContentResolver 的基本用法


    1. 内容 URI

    不同于 SQLiteDatabase,ContentResolver 中的增删改查方法都是不接收表名参数的,而是使用一个 Uri 参数代替,这个参数被称为内容 URI。
    主要由两部分组成,权限(authority)路径(path)

    • 权限(authority):用于对不同的应用程序做区分的,一般为了避免冲突,都会采用程序包名的方式来进行命名。如:com.example.app.provider
    • 路径(path):用于对同一应用程序中不同的表做区分的,通常都会添加到权限的后面。如:/table1
    • 还需要在字符串的头部加上 协议声明content://
    • 结合起来 内容 URI 就是:content://com.example.app.provider/table1

    2. ContentResolver 使用步骤

    (1). 通过 Context 中的 getContentResolver() 方法获得实例。
    (2). 组装出 内容 URI。
    (3). 把内容 URI 解析成 Uri 对象:
    Uri uri = Uri.parse("content://com.example.app.provider/table1")
    
    (4). 增删改查。

    二、增删改查


    1. 查询数据

    Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
    
    if (cursor != null) {
        while (cursor.moveToNext()) {
            String column1 = cursor.getString(cursor.getColumnIndex("column1"));
            int column2 = cursor.getInt(cursor.getColumnIndex("column2"));
        }
        cursor.close();
    }
    

    2. 添加数据

    ContentValues values = new ContentValues();
    values.put("column1", "text");
    values.put("column2", 1);
    getContentResolver().insert(uri, values);
    

    3. 更新数据

    ContentValues values = new ContentValues();
    values.put("column1", "");
    getContentResolver().update(uri, values, "column1 = ? and column2 = ?", new String[] {"text", "1"});
    

    4. 删除数据

    getContentResolver().delete(uri, "column2 = ?", new String[] { "1" });
    

    相关文章

      网友评论

          本文标题:访问其他程序中的数据

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