Android四大组件——ContentProvider

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android四大组件——ContentProvider相关的知识,希望对你有一定的参考价值。

ContentProvider数据提供者

用与程序与程序之间的数据传递。

ContentProvider提供了其他程序调用该程序内部数据的调用方法。

/*
 * 用来定义其他程序调用该程序数据时
 * 可以进行的操作。
 */
public class MyContentProvider extends ContentProvider {

    @Override//在ContentProvider创建后被调用
    public boolean onCreate() {
        // TODO Auto-generated method stub
        return false;
    }
    
    @Override//根据Uri,插入valuse对应的数据
    public Uri insert(Uri uri, ContentValues values) {
        // TODO Auto-generated method stub
        return null;
    }
    
    @Override//根据Uri删除指定条件(selection和selectionArgs)匹配的全部记录
    public int delete(Uri arg0, String selection, String[] selectionArgs) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override//根据Uri查询指定条件(selection和selectionArgs)匹配的全部记录,projection(列名),sortOrder(排序)
    public Cursor query(Uri uri, String[] projection, String selection,
            String[] selectionArgs, String sortOrder) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override//根据Uri修改指定条件(selection)匹配的全部记录,修改为values对应的数据
    public int update(Uri uri, ContentValues values, String selection,
            String[] selectionArgs) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override//返回当前Uri的MIME类型,如果Uri对应数据可能包含多条记录
    //那么MIME类型字符串就以vnd.android.dir/开头
    //如果Uri对应数据只有一条,那么MIME类型字符串就以vnd.android.cursor.item/开头
    public String getType(Uri uri) {
        // TODO Auto-generated method stub
        return null;
    }
}

记得注册:

<provider 
            android:name=".MyContentProvider"
            android:authorities="com.example.z_contentprovider">
        </provider>

一般调用ContentProvider的方法是通过Uri对象

技术分享

技术分享

还可以调用系统的ContentProvider

/**
 * 数据提供者ContentProvider: 
 * 四大组件,存储方式,可以跨程序处理数据
 * 其他存储形式都只是在单独一个程序中完成一个数据的共享
 * 不能调用其他程序的数据
 */
/**
 * 其他程序调用自定义的ContentProvider时,需要用通用资源表字符(Uri)记录授权信息
 * android:authorities="com.example.z_contentprovider"
 * 这是使用ContentProvider需要在AndroidManifest.xml中组成的一个属性,就是授权记录的名字。
 */
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /**
         * 系统提供的ContentProvider可以调用系统短信,联系人,图片音乐等资源。
         * ContentResolver对象和ContentProvider一样提供了通过uri的增删查改方法。
         */
        ContentResolver cp = getContentResolver();
        ContentValues values = new ContentValues();
        //cp.insert(url, values);
        //cp.delete(url, where, selectionArgs);
        //cp.update(url, values, where, selectionArgs)
        //cp.insert(url, values);
    }
}

 

如果有什么错误,或者我理解错误或不当的,恳请大家纠正,谢谢!嘻嘻嘻~

以上是关于Android四大组件——ContentProvider的主要内容,如果未能解决你的问题,请参考以下文章

Android之四大组件六大布局五大存储 总结

Android N 四大组件的工作原理

Android组件-1-四大组件

Android四大组件

Android 四大组件

Android之四大组件六大布局五大存储