重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章给大家分享的是有关Android中Content Provider的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、虚拟空间、营销软件、网站建设、长沙县网站维护、网站推广。
Content Provider(内容提供器)
在内容提供器中,有别于文件储存这类的是,他可以指定想要共享的部分,而不是全局共享
对于每一个应用程序来说,如果想要访问内容提供器里共享的数据,就一定要借助ContentResolver类,通过getContent -Resolver获取实例,在ContentResolver中提供了一系CRUD(增删改查)的方法进行操作其中
insert,添加数据
update,更新数据
delete,删除数据
query,查询数据
不同于SQLiteDatebase,ContentResolver中的CRUD是使用一个Uri参数代替,这个参数被称为内容参数,由两部分组成:authority和path。authority主要用来对不同应用进行区分,path用于对同一个应用的不同表进行区分
例如:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button addData = (Button) findViewById(R.id.add_data); addData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 添加数据 Uri uri = Uri.parse("content://com.example.databasetest.provider/book"); ContentValues values = new ContentValues(); values.put("name", "A Clash of Kings"); values.put("author", "George Martin"); values.put("pages", 1040); values.put("price", 55.55); Uri newUri = getContentResolver().insert(uri, values); newId = newUri.getPathSegments().get(1); } }); Button queryData = (Button) findViewById(R.id.query_data); queryData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 查询数据 Uri uri = Uri.parse("content://com.example.databasetest.provider/book"); Cursor cursor = getContentResolver().query(uri, null, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { String name = cursor.getString(cursor. getColumnIndex("name")); String author = cursor.getString(cursor. getColumnIndex("author")); int pages = cursor.getInt(cursor.getColumnIndex ("pages")); double price = cursor.getDouble(cursor. getColumnIndex("price")); Log.d("MainActivity", "book name is " + name); Log.d("MainActivity", "book author is " + author); Log.d("MainActivity", "book pages is " + pages); Log.d("MainActivity", "book price is " + price); } cursor.close(); } } }); Button updateData = (Button) findViewById(R.id.update_data); updateData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 更新数据 Uri uri = Uri.parse("content://com.example.databasetest.provider/book/" + newId); ContentValues values = new ContentValues(); values.put("name", "A Storm of Swords"); values.put("pages", 1216); values.put("price", 24.05); getContentResolver().update(uri, values, null, null); } }); Button deleteData = (Button) findViewById(R.id.delete_data); deleteData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 删除数据 Uri uri = Uri.parse("content://com.example.databasetest.provider/book/" + newId); getContentResolver().delete(uri, null, null); } }); }
似乎很简单的样子,但是这样就一定安全吗?或者说是所有人都用这个方法去共享数据的吗,如果不是呢?这就要说到自己创建内容提供器
继承ContentProvider,然后实现他的六个抽象方法即可
onCreate()
query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder)
insert(Uri uri,ContentValues values)
updaya(Uri uri,ContentValues values)
updata(Uri uri,ContenValues values,String selection,String[]selectionArgs)
delete(Uri uri,String selection,String[] selectionArgs)
getType(Uri uri)
以上就是Android中Content Provider的作用是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。