首页 > 其他分享 >移动开发----ContentProvider之获取数据

移动开发----ContentProvider之获取数据

时间:2022-11-23 18:45:16浏览次数:65  
标签:MyDao null ---- 获取数据 context onCreate new ContentProvider public

1. 设计目标

利用contentprovider获取数据

2.实现功能

自建一个provider,然后在另一个app中使用resolver调用这个provider。

3.代码分析

首先,在AS上创建两个新项目,命名为Myreceiver和Mycontentprovider

Myreceiver项目

其布局和mainactivity代码如下:

image

image

在页面中添加了一个button按钮,为button按钮写入监听事件。

Mycontentprovider:

新建一个provider:new->other->content Provider,自动生成方法:

只需要更改oncreate方法
点击查看代码
    public boolean onCreate() {
        Context context=getContext();
        MyDao myDao=new MyDao(context);
        return true;
    }

添加一个MyDBhelper的java文件,之前写过,直接复制过来,代码如下:

点击查看代码
public class MyDBhelper extends SQLiteOpenHelper {

    public MyDBhelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory,
                      int version) {
        super(context, "ZW", null, version);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table student(id Integer primary key autoincrement," +
                "name varchar(20),age Integer)");
        Log.d("ZW","onCreate is running");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

再新建一个java文件MyDao.java,在这里实现数据库的增删改查功能。代码如下:

点击查看代码
public class MyDao {
    private SQLiteDatabase database;
    private SQLiteOpenHelper myopenhelper;
    private Context context;

    private Uri uri=Uri.parse("content://zw.provider");

    public MyDao(Context context){
        this.context=context;
        myopenhelper=new MyDBhelper(context,"zw",null,1);
        database=myopenhelper.getReadableDatabase();

        database.execSQL("drop table if exists student");
        database.execSQL("create table student(id integer primary key autoincrement"+", name varchar(20), age integer)");
    }

    public Uri addvalue(Uri uri, ContentValues values){
        long rowID=database.insert("student",null,values);

        if(rowID == -1){
            Log.d("Dao","数据插入失败");
            return  null;
        }
        else {
            Uri insertUri= ContentUris.withAppendedId(uri,rowID);
            Log.d("zw","ContentUris:"+insertUri.toString());
            context.getContentResolver().notifyChange(insertUri,null);
            return insertUri;
        }
    }
}

#### 最后是mainactivity,只需要new一个Mydao对象即可
点击查看代码
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyDao myDao=new MyDao(this);
    }

4.效果展示:

image

两个app同时在后台运行,点击两次按钮,在数据库中插入两条数据。

image

5.源码

resolver

标签:MyDao,null,----,获取数据,context,onCreate,new,ContentProvider,public
From: https://www.cnblogs.com/zhangweisen/p/16919193.html

相关文章

  • SpringCloud入门
    一、SpringCloud简介与版本选择1、简介SpringCloud是一系列框架的集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心......
  • 数据库的基本数据类型
    字符编码与配置文件数据库引擎操作创建表的完整语法MySQL字段基本数据类型MySQL字段常见约束条件今日内容详细字符编码与配置文件1.\s查看MySQL相关信息 当前用......
  • 往数组中push对象,会覆盖之前 push的值
    1varobj={a:123,b:234,c:345};2vararray=[];3for(vari=0;i<obj.length;i++){varresultObj={};resultObj.name=obj[i];array.push(resultObj);4};......
  • 前n个数字中的“完美数”,及其它的因子.C
    #include<stdio.h>intmain(){ inti,a,b,d,n,sum; printf("请输入一个整数:"); scanf("%d",&a);   for(i=1;i<=a;i++)      {    sum=0;  ......
  • ubuntu 系统备份
    利用tar将系统文件打包成压缩文件,只要简单重装系统,然后解压覆盖就恢复系统了。 备份:(将整个文件系统从根目录开始除了home和media目录完整备份,文件存放在当前用户......
  • SAP 应用集成技术
    下面列出了外部系统与公司SAP系统交互的几种可行方式:1. 使用COM方式通过调用sapgui交互2. 直连sap的物理数据库系统3. 使用sapconnector......
  • BizTalk Adpter Pack for MySap 的安装
     BizTalkAdpterPackforMySap的安装方法:1,首先安装必需两个SAPLIB,1.librefc32u.dll2.libsapu16vc80.dll,这两个文件的来源可以在安装了sapgui的客户端......
  • ubuntu - 删除除不必要的内核版本
    首先显示现在已安装的内核版本列表dpkg--get-selections|greplinux 显示如下:libselinux1               installlinux-firmware       ......
  • ubuntu - linux开源 网络包分析工具 Wireshark
    跟踪一个网络程序,想看看它的封包收发情况,以前在windows下自已写了一个简单的封包分析工具,但是linux下写网络程序没经验,而且也就临时想用一下,不想自已再开发一次了。google......
  • Codeforces Round #835 (Div. 4) A-G完全题解
    比赛链接A、点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){intT;cin>>T;while(T--){vector<int>G;for(inti=1;......