android 基础一 <Content Provider>

第一步:定义类继承 ContentProvider,实现相关接口

public class MyContentProvider extends ContentProvider 

第二步:定义 UriMatcher

    private final static String AUTHORITY="com.myprovider";//配置文件需要用到这个
    private final static int INSERT_CODE=1;
    private final static int UPDATE_CODE=2;
    private final static int DELETE_CODE=3;
    private final static int SELECT_CODE=4;

    private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    static {
        Log.e(TAG,"-----uriMatcher--------");
        uriMatcher.addURI(AUTHORITY, "insert", INSERT_CODE);
        uriMatcher.addURI(AUTHORITY, "update", UPDATE_CODE);
        uriMatcher.addURI(AUTHORITY, "delete", DELETE_CODE);
        uriMatcher.addURI(AUTHORITY, "selete", SELECT_CODE);
    }

第三步:匹配 增、删、改、查 URL

 @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
        Log.e(TAG,"query");
        if(uriMatcher.match(uri)==SELECT_CODE){
            Log.e(TAG,"query 匹配");
        }else{
            Log.e(TAG,"query fail");
        }
        return null;
    }

第四步:配置文件

    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <provider
            android:exported="true"
            android:authorities="com.myprovider"
            android:name=".MyContentProvider"/>
    </application>

源码:

public class MyContentProvider extends ContentProvider {
    static  String TAG="MyContentProvider";
    private final static String AUTHORITY="com.myprovider";
    private final static int INSERT_CODE=1;
    private final static int UPDATE_CODE=2;
    private final static int DELETE_CODE=3;
    private final static int SELECT_CODE=4;

    private static final UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    static {
        Log.e(TAG,"-----uriMatcher--------");
        uriMatcher.addURI(AUTHORITY, "insert", INSERT_CODE);
        uriMatcher.addURI(AUTHORITY, "update", UPDATE_CODE);
        uriMatcher.addURI(AUTHORITY, "delete", DELETE_CODE);
        uriMatcher.addURI(AUTHORITY, "selete", SELECT_CODE);
    }

    @Override
    public boolean onCreate() {
        return false;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
        Log.e(TAG,"query");
        if(uriMatcher.match(uri)==SELECT_CODE){
            Log.e(TAG,"query 匹配");
        }else{
            Log.e(TAG,"query fail");
        }
        return null;
    }

    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        Log.e(TAG,"insert");
        if(uriMatcher.match(uri)==INSERT_CODE){
            Log.e(TAG,"insert 匹配");
        }else{
            Log.e(TAG,"insert fail");
        }
        return null;
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        Log.e(TAG,"delete");
        if(uriMatcher.match(uri)==DELETE_CODE){
            Log.e(TAG,"delete 匹配");
        }else{
            Log.e(TAG,"delete fail");
        }
        return 0;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
        Log.e(TAG,"update");
        if(uriMatcher.match(uri)==UPDATE_CODE){
            Log.e(TAG,"update 匹配");
        }else{
            Log.e(TAG,"update fail");
        }
        return 0;
    }
}

第三方APP调用 Content Provider

  Uri url = Uri.parse("content://com.myprovider/insert");
  getContentResolver().delete(url,"ss",null);

原文地址:https://www.cnblogs.com/jtzp007/p/11494565.html

时间: 2024-08-29 17:12:21

android 基础一 <Content Provider>的相关文章

Android Contacts (android通讯录读取)-content provider

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri

Android Studio开发基础之Content Provider组件

Content Provider是一个提供数据共享的组件,它主要将一些特定的应用程序数据提供给其他应用程序使用,这些应用程序数据可以存储于文件系统或者SQLite数据库中.在Android应用程序中,共享数据的实现需要继承自Content Provider基类,然而,应用程序并不直接调用这些方法,而是使用一个ContentResolver对象,并通过调用它的方法作为替代,ContentResolver对象提供了query,insert及update等方法,可以对共享的数据执行各种操作. 举例:使

Android学习总结——Content Provider

原文地址:http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html Content Provider内容提供者 : android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序.这些数据可以存储在文件系统中.在一个SQLite数据库.或以任何其他合理的方式, 其他应用可以通过ContentResolver类(见ContentProviderAccessApp例子)从该内容提供者中

Android开发-API指南-Content Provider

Content Providers 英文原文:http://developer.android.com/guide/topics/providers/content-providers.html 采集日期:2015-01-07 文章目录 Content Provider 基础 创建 Content Provider Calendar Provider Contact Provider 相关示例 Contact Manager 应用 “游标(联系人)” “游标(电话)” Sync Adapter

创建一个内容提供者Creating a Content Provider——翻译总结自developer.android.com

前言 content provider提供了一种访问结构化数据的方式.他通过封装数据进行安全的数据访问.content provider是跨进程访问数据的标准接口. 当你想访问content Provider的数据的时候,使用Context对象中的ContentResolver对象.这个对象和content provider的一个对象进行交互.provider对象接收客户端的查询等请求,并返回结果. 如果你的应用不需要和其他的应用共享数据,那么可以不必开发content provider.但你你

Android学习笔记(四七):Content Provider初谈和Android联系人信息

Content Provider 在数据处理中,Android通常使用Content Provider的方式.Content Provider使用Uri实例作为句柄的数据封装的,很方便地访问地进行数据的增.删.改.查的操作.Android并不提供所有应用共享的数据存储,采用content Provider,提供简单便捷的接口来保持和获取数据,也可以实现跨应用的数据访问.简单地说,Android通过content Provider从数据的封装中获取信息. Content provider使用Uri

【安卓】Content Provider 基础

Content Provider介绍Android中的Content Provider机制可以支持在多个应用中存储和读取数据.这也是跨应用共享数据的唯一方式.在android系统中,没有一个公共的内存区域,供多个应用共享存储数据,要在多个应用中共享数据,就需要使用Content Provider.Android提供了一些常用数据类型的Contentprovider,比如音频.视频.图片和私人通讯录等.可在android.provider包下面找到一些android提供的Content Provi

Android基础系列合集

四大组件 1.Service Android四大组件-Service Android-远程Service Service 动态更新 UI 2.Activity Android四大组件-Activity Android-Activity启动流程 Android - ANR小结 3.Content Provider Android四大组件-Content Provider android - SQLite 数据库 4.Broadcast Receiver Android四大组件-Broadcast

Android开发-API指南-&lt;provider&gt;

<provider> 英文原文:http://developer.android.com/guide/topics/manifest/provider-element.html 采集(更新)日期:2014-7-1 搬迁自原博客:http://blog.sina.com.cn/s/blog_48d491300100zmv5.html 语法: <provider android:authorities="list" android:enabled=["true&