Android移动应用基础教程【使用内容提供者共享数据】

举报
振华OPPO 发表于 2022/03/06 15:52:37 2022/03/06
5.1k+ 0 0
【摘要】 @TOC 一、内容提供者概述 二、创建内容提供者 三、访问其他应用程序 1、查询其他程序的数据 //获取相应操作的Uri,Uri.parse()方法是将字符串转化成Uri对象。 Uri uri = Uri.parse("content://cn.itcast.mycontentprovider/person"); //获取ContentResolver对象 ContentResolv...

@TOC

一、内容提供者概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、创建内容提供者

在这里插入图片描述
在这里插入图片描述

三、访问其他应用程序

1、查询其他程序的数据

	//获取相应操作的Uri,Uri.parse()方法是将字符串转化成Uri对象。
	Uri uri = Uri.parse("content://cn.itcast.mycontentprovider/person"); 
	//获取ContentResolver对象
    ContentResolver resolver = context.getContentResolver();
    //通过ContentResolver对象查询数据
    Cursor cursor = resolver.query(Uri uri, String[] projection, String selection,
                                     String[] selectionArgs, String sortOrder);
    while (cursor.moveToNext()) {
        String address = cursor.getString(0); 
        long date = cursor.getLong(1);
        int type = cursor.getInt(2);
   }
    cursor.close();

在这里插入图片描述
在这里插入图片描述

2 、查询系统短信

在这里插入图片描述

四、内容观察者

1、什么是内容观察者

在这里插入图片描述
在这里插入图片描述

 //创建内容观察者
 private class MyObserver extends ContentObserver{
        public MyObserver(Handler handler) {
            super(handler);
        }
        //当观察到Uri代表的数据发生变化时调用此方法,程序会回调onChange()方法,
        //并在该方法中处理相关逻辑
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
          }
    }
  ContentResolver resolver = getContentResolver();
    Uri uri = Uri.parse("content://aaa.bbb.ccc");
    //注册内容观察者
    resolver.registerContentObserver(uri, true, new MyObserver(new Handler()));

在这里插入图片描述

 @Override
protected void onDestroy() {
     super.onDestroy();
     //取消注册内容观察者
     getContentResolver().unregisterContentObserver(new MyObserver(       
     											new Handler()));
}

在这里插入图片描述

2、监测数据变化

在这里插入图片描述

五、本章小结

本章详细地讲解了内容提供者的相关知识,首先简单地介绍了内容提供者,然后讲解了如何创建内容提供者以及如何使用内容提供者访问其他程序暴露的数据,最后讲解内容观察者,通过内容观察者观察数据的变化。本章所讲的ContentProvider是Android四大组件之一,在后续遇到程序之间需要共享数据时,会经常用到该组件,因此要求初学者一定要熟练掌握本章内容。

为了记住你的笑容,我拼命按下心中的快门!——《美丽人生》

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。