第十天 ContentProvider内容提供者的使用

第十天 ContentProvider内容提供者的使用,第1张

概述ContentProvider的介绍和使用ContentProvider介绍内容提供者很好理解,就是给其他的应用程序,提供一个访问我们sqlite的文件的机会.因为涉及到数据的安全,才有了提供者和解析者.只有提供者提供了数据,解析者才可以拿到.1.ContentProvider内容提供者(四大组件之一)主要用 ContentProvIDer 的介绍和使用ContentProvIDer介绍

内容提供者很好理解,就是给其他的应用程序,提供一个访问我们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方法访问数据库

自定义类继承sqliteOpenHelper
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内容提供者的使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1063615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存