内容提供者很好理解,就是给其他的应用程序,提供一个访问我们sqlite的文件的机会.
因为涉及到数据的安全,才有了提供者和解析者.
只有提供者提供了数据,解析者才可以拿到.
1.ContentProvIDer内容提供者(四大组件之一)主要用于在不同的应用程序之间实现数据共享的功能。
2.技能get点:
(1)访问系统自带的内容提供者(******)
手机联系人/音频/视频/图库/短信/系统设置
(2)自己写内容提供者
3.三个重点
(1) contentProvIDer 内容提供者
(2) contentResolve 内容解析者
(3) uri 地址
可以简单的理解为:
内容提供者提供一个地址,内容解析者把uri解析一下,去指向提供者的地址.
1.提供方:ContentProvIDer
(1)创建数据库,自定义类继承sqliteOpenHelper
(2)自定义内容提供者类,继承ContentProvIDer,重写insert/delete/update/query方法,向外界提供方法
(3)清单文件中注册内容提供者
2.索要方:ContentResolver
(1)通过Context的getContentResolver方法获得ContentResolver对象
(2)确定uri
(3)调用insert/delete/update/query方法访问数据库
package com.example.mycontentprovIDer;import androID.content.Context;import androID.database.sqlite.sqliteDatabase;import androID.database.sqlite.sqliteOpenHelper;public class MysqLliteHelper extends sqliteOpenHelper { public MysqLliteHelper(Context context, String name, sqliteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } @OverrIDe public voID onCreate(sqliteDatabase db) { db.execsql("create table student(ID integer primary key autoincrement,name varchar(20))"); db.execsql("insert into student(ID,name)values(null,'张三')"); } @OverrIDe public voID onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) { }}
创建ContentProvIDer在java包创建
两个复选框要勾选,作为可用,Uri作为标识
ContentProvIDer代码
package com.example.mycontentprovIDer;import androID.content.ContentProvIDer;import androID.content.ContentValues;import androID.database.Cursor;import androID.database.sqlite.sqliteDatabase;import androID.database.sqlite.sqliteOpenHelper;import androID.net.Uri;public class MyContentProvIDer extends ContentProvIDer { private sqliteDatabase readableDatabase; public MyContentProvIDer() { } @OverrIDe public int delete(Uri uri, String selection, String[] selectionArgs) { // Implement this to handle requests to delete one or more rows. int student = readableDatabase.delete("student", selection, selectionArgs); return student; } @OverrIDe public String getType(Uri uri) { // Todo: Implement this to handle requests for the MIME type of the data // at the given URI. throw new UnsupportedOperationException("Not yet implemented"); } @OverrIDe public Uri insert(Uri uri, ContentValues values) { // Todo: Implement this to handle requests to insert a new row. readableDatabase.insert("student", null, values); return uri; } @OverrIDe public boolean onCreate() { MysqLliteHelper MysqLliteHelper = new MysqLliteHelper(getContext(), "stu.db", null, 1); readableDatabase = MysqLliteHelper.getReadableDatabase(); if (readableDatabase != null) { return true; } return false; } @OverrIDe public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // Todo: Implement this to handle query requests from clIEnts. Cursor student = readableDatabase.query("student", projection, selection, selectionArgs, null, null, sortOrder); return student; } @OverrIDe public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { // Todo: Implement this to handle requests to update one or more rows. int student = readableDatabase.update("student", values, selection, selectionArgs); return student; }}
Activity代码package com.example.mycontentprovIDer;import androIDx.appcompat.app.AppCompatActivity;import androID.content.ContentResolver;import androID.net.Uri;import androID.os.Bundle;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.Toast;import java.net.URL;public class MainActivity extends AppCompatActivity { private button deleteID; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); deleteID = (button) findVIEwByID(R.ID.delete_ID); final ContentResolver contentResolver = getContentResolver(); final Uri uri = Uri.parse("content://com.day0302.app"); deleteID.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { contentResolver.delete(uri, "ID=?", new String[]{"2"}); Toast.makeText(MainActivity.this, "已删除", Toast.LENGTH_SHORT).show(); } }); }}
点赞收藏分享文章举报太阳看见你发布了9 篇原创文章 · 获赞 1 · 访问量 154私信 关注 总结 以上是内存溢出为你收集整理的第十天 ContentProvider内容提供者的使用全部内容,希望文章能够帮你解决第十天 ContentProvider内容提供者的使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)