Android四大组件之~~ContentProvider

Android四大组件详解 阅读详情

声明:转载请注明出处:http://blog.youkuaiyun.com/Hello_Chillax/article/details/45669473

开题:对android稍微有些了解的朋友都知道,android中有四大组件,分别是:Activity,Service,ContentProvider,BrocastReserver。今天来介绍其一:ContentProvider。

ContentProvider:
顾名思义,内容提供者。实现了不同程序之间数据的分享。简单地说,就是程序B可以通过得到程序A中的Provider来获取A中的数据。

下面通过一个例子来讲解ContentProvider的完整使用过程。

1 首先我们来创建提供数据的程序A:

1.1 创建一个Provider:

public class MyProvider extends ContentProvider {

    private static final String AUTHORITY = "com.example.a_provider.MyProvider";
    private static final int INSERT_CODE = 0;
    private static final int DELETE_CODE = 1;
    private static final int UPDATE_CODE = 2;
    private static final int QUARY_CODE = 3;
    private static UriMatcher uriMatcher;

    static {
        // 静态代码块,只在创建之初执行一次
        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);

        // 添加访问的方式:
        // 添加插入操作:AUTHORITY/insert,下面的类似
        //查找时可以用:content://com.example.a_provider.MyProvider/insert
        uriMatcher.addURI(AUTHORITY, "insert", INSERT_CODE);
        // 同上,删
        uriMatcher.addURI(AUTHORITY, "delete", DELETE_CODE);
        // 改
        uriMatcher.addURI(AUTHORITY, "update", UPDATE_CODE);
        // 查单个数据
        uriMatcher.addURI(AUTHORITY, "quary", QUARY_CODE);
    }

    @Override
    public boolean onCreate() {
        return true;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
            String[] selectionArgs, String sortOrder) {
        // 查询是否是匹配该内容提供者的authority,这里authority的作用就体现出来了。
                switch (uriMatcher.match(uri)) {
                // 如果返回码是QUARY_CODE,说明应该执行query操作:
                case QUARY_CODE:
                    return null;
                default:
                    throw new IllegalArgumentException("not match query!");
                }
    }

    @Override
    public String getType(Uri uri) {
        return "vnd.android.cursor.item" ;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        // 查询是否是匹配该内容提供者的authority,这里authority的作用就体现出来了。
        switch (uriMatcher.match(uri)) {
        // 如果返回码是INSERT_CODE,说明应该执行insert操作:
        case INSERT_CODE:
            return Uri.parse("insert success");
        default:
            throw new IllegalArgumentException("not match insert!");
        }
    }

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
        // 查询是否是匹配该内容提供者的authority,这里authority的作用就体现出来了。
        switch (uriMatcher.match(uri)) {
        // 如果返回码是DELETE_CODE,说明应该执行delete操作:
        case DELETE_CODE:
            return 0;
        default:
            throw new IllegalArgumentException("not match delete!");
        }
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
            String[] selectionArgs) {
        // 查询是否是匹配该内容提供者的authority,这里authority的作用就体现出来了。
        switch (uriMatcher.match(uri)) {
        // 如果返回码是UPDATE_CODE,说明应该执行update操作:
        case UPDATE_CODE:
            return 0;
        default:
            throw new IllegalArgumentException("not match update!");
        }
    }

}

1.2 然后需要在manifest中声明这个provider,和Activity类似。

<provider
            <!-- android:exported必须设置为true,否则外界访问不到 -->
            android:exported="true"
            android:name="com.example.a_provider.MyProvider"
            <!-- 设置provider的主机名,也就是外界通过这个字符串来找到这个provider。 -->
            android:authorities="com.example.a_provider.MyProvider"
            <!-- 设置访问该provider所需要声明的权限(以前都是使用权限,这里我们反过来给使用者设置权限) -->
            <!-- 权限的名字是随便起的,只要是不重复就行,而且权限的数目也不固定 -->
            android:readPermission="aa.bb.cc.reader"
            android:writePermission="aa.bb.cc.writer" >
        </provider>

1.3 我们为访问这个provider的程序提供了两个permission,需要声明一下

<permission android:name="aa.bb.cc.reader" >
    </permission>
    <permission android:name="aa.bb.cc.writer" >
    </permission>

好了,到此,我们的provider已经设置成功了。

2 然后我们来调用这个provider。

2.1 在MainActivity中:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        insert();
    }
    public void insert(){
    //这里的Uri就是provider的访问路径,还记得我们上面设置的那个authorities吗,这里用到了:content://authorities/#
    //使用的格式是:
        Uri uri=Uri.parse("content://com.example.a_provider.MyProvider/insert");
        //内容提供者访问对象:
        ContentResolver resolver=getContentResolver();
        ContentValues values=new ContentValues();
        //可以添加数据
        values.put("凤姐", 20);
        //进行插入操作:
        Uri uri2 =resolver.insert(uri, values);
        //输出结果:uri2:inset success
        System.out.println("uri2:"+uri2.toString());
    }

2.2 最后,别忘了再manifest中声明权限:

<uses-permission android:name="aa.bb.cc.writer"/>
<uses-permission android:name="aa.bb.cc.reader"/>

至此,我们实现了provider的创建,设置权限,并通过另一个程序进行访问,整个流程就是这么简单~

OK,有不懂的欢迎留言询问。demo很简单,不用提供了吧~

YOLOv13结合Sobel边缘检测算子,实现EIEM(Edge Information Enhancement Module,边缘信息增强模块),强化空间特征提取 EIEM模块通过巧妙地结合Sobel边缘检测算子和现代卷积网络架构,实现了显式边缘信息增强的创新设计。这种方法不仅提高了网络对边缘特征的敏感性,还保持了良好的计算效率和模块化特性。 从技术实现角度看,EIEM展示了如何将经典计算机视觉算法无缝集成到深度学习框架中,为构建更强大、更可解释的视觉模型提供了新的思路。随着对边缘信息重要性认识的不断深入,以及对网络可解释性需求的增长,EIEM这样的显式特征增强模块将在未来的计算机视觉研究中发挥越来越重要的作用。 阅读详情

相关推荐

STM32+LoRa模块实战:从环境搭建到数据传输完整指南(附避坑清单)

本文提供STM32与LoRa模块从环境搭建到数据传输的完整实战指南,涵盖硬件连接、开发环境配置、AT指令设置、频段优化及低功耗设计等关键步骤,特别针对常见问题提供解决方案和避坑清单,助力物联网开发者高效实现远距离低功耗通信。

weixin_29168813的博客 290

Android四大组件

仅供自己学习使用-转载请注明文中内容出自哪里(我已不知道哪里复制的) 目录 一、活动(Activity) 1.概念 2.生命周期 3.Intent 4.Activity启动模式和任务栈 二、服务(Service) 1.概念 2.生命周期 3.启动方式 三、广播接收者(Broadcast Receive) 1.概念 2.注册方式 四、内容提供者(Content Provider) 1.概念 2.用途 Android 系统的四大组件分别是:活动(activit...

小小怪大人物de博客 4896

wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled

显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。

2303_78660611的博客 957

Android学习——四大核心组件(核心知识点整理)

Android 开发的四大组件分别是:活动(activity),用于表现功能;服务(service),后台运行服务,不提供界面呈现;广播接受者(Broadcast Receive),勇于接收广播;内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库。 Activity 1.定义:Activity组件,在应用中的一个Activity可以用来表...

UUUUUltraman的博客 9085

lumerical-环形谐振器

利用mode求解器优化得到所需的环的总长度,即环形器的半径,然后通过varFDTD得到光场分布和透过率.

m0_61776728的博客 2189

车载软件架构 —— AUTOSAR Vector SIP包(三)

### 上一篇文章中介绍了AUTOSAR基础软件供应商Vector公司的开发工具链,本文将继续介绍Vector公司的AUTOSAR产品。 ### -> 1、Vector SIP包中的StartApplication ### -> 2、StartApplication如何开始使用

Soly_kun的博客 831

Android 四大组件,五大存储,七大布局

Android 四大组件 android四大组件分别是:Activity, service,content provider,broadcast receiver Activity Service Content Provider Broadcast Receiver Android 五大存储 SharedPreferences 方式 文件存储方式 SQList 存储...

xianKOG的博客 4万+

【人工智能】RAG如何根据实际需求选择和进行文档解析(如 PDF、Word、TXT、网页等)?

文档解析的核心在于根据解析目标、文档类型和处理量选择合适工具。PDF、Word、TXT和网页各有特性:PDF需区分可编辑与扫描版,Word需处理结构化内容,TXT简单但需注意编码,网页需应对动态内容。解析场景包括提取纯文本、结构化数据、保留格式和批量处理。非技术用户可借助工具如Adobe Acrobat、WPS和在线OCR,技术用户可通过编程实现自动化。通用流程为:明确目标、分析文档属性、选择工具并测试优化。核心是“工具适配需求”,无需追求万能方案。

奶爸的编程之路,也就一周冷个三天 506

Android四大组件详解(大白话版)

 1. Activity:负责展示用户界面,就像App的一个个“页面”,用户通过它与应用交互。   2. Service:在后台默默干活的打工人,比如播放音乐或下载文件,没有界面但能长时间运行。   3. BroadcastReceiver:像“收音机”一样接收系统或应用发出的广播消息,比如电量低或网络变化,然后做出响应。   4. ContentProvider:是“数据管家”,管理应用的数据并提供统一接口,让其他应用也能访问这些数据。  

m0_73804764的博客 1万+

读懂 ABAP CDS 注解的直接、继承与派生

本文系统梳理了ABAP CDS注解的评估逻辑,重点解析直接注解(Direct)、继承注解(Inherited)和派生注解(Derived)的差异及其在CL_DD_DDL_ANNOTATION_SERVICE中的处理方式。通过视图注解@Metadata.ignorePropagatedAnnotations可调控注解传播行为,避免下游语义影响上层视图。文章还提供了基于标准表的完整示例(包含底层视图、消费视图和ABAP报告程序),帮助开发者在实际系统中验证三层注解的叠加效果与阻断机制。关键点包括:派生注解的数据

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 245

MIKE水动力笔记13_数字化海图2之克里金插值

在进行MIKE水动力建模之初,需要准备好水深数据,本专题系列博文主要讲解如何将扫描版JPG格式海图数据在ArcGIS中进行数字化并制作成xyz水深地形数据,用的克里金插值方法,仅供参考。

晏长街的博客 2881

Android四大组件、七大布局详解

Android四大组件、七大布局详细内容。

LiuYong_01的博客 6140

什么是垂直同步?电脑快速消除屏幕撕裂与提升游戏性能的方法 垂直同步、游戏画面撕裂、游戏优化、VSync、FPS、FreeSync、G-Sync、显卡驱动更新、游戏画质、输入延迟

看这张动图,左边的画面出现了明显“切开”的断层现象,而右边画面非常流畅,没有撕裂。这正是「垂直同步」开关的区别。:每秒生成多少帧图像。比如 60FPS 表示一秒钟显示 60 张图片。刷新率(Refresh Rate):显示器每秒刷新几次画面,单位是赫兹(Hz)。60Hz 表示每秒刷新 60 次。参数说明FPS显卡渲染速度(逻辑帧率)刷新率显示器的显示频率(物理限制)当 FPS 高于刷新率时,显卡渲染的画面来不及被显示器显示,导致撕裂。屏幕撕裂(Screen Tearing)

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1347

【Android】基础回顾--四大组件

继承至BroadcastReceiver基类重写onReceiver()方法广播接收器收到相应广播后,会自动回调onReceiver()方法;一般情况下,onReceiver方法会涉及与其他组件之间的交互,如发送Notification、启动service等等;默认情况下,广播接收器运行在UI线程,因此onReceiver方法不能执行耗时操作,否则可能ANR。

2303_79296612的博客 3953

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[Android]四大组件简介

在 Android 开发中,“四大组件”(Four Major Components)是指构成 Android 应用程序的四种核心组件,它们通过各自的方式与系统交互,实现应用的多样功能。这些组件是:Activity、Service、Broadcast Receiver 和 Content Provider。每个组件都扮演着不同的角色,并且通过各自的生命周期、方法和目的与 Android 操作系统交互。

Gamin 5926

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android系列:四大组件、五大存储、六大布局

文章目录一、四大组件**1、activity****2、service****3、content provider****4、broadcast receiver**android四大组件总结(1)4大组件的注册(2)4大组件的激活(3)4大组件的关闭(4)android中的任务(activity栈)二、六大界面布局:1. LinearLayout线性布局LinearLayout的常用XML属性及相关方法LinearLayout子元素支持的常用XML属性及方法2. TableLayout表格布局TableL

程序人生 5220

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android中的四大组件详解

Android中的四大组件详解 我们都知道Android系统应用层框架中,为开发者提供了四大组件来便于应用的开发,它们是Activity、Service、BroadcastReceiver、ContentProvider。 它们用于在应用开发过程中,不同场景的功能实现。 Activity:Activity是开发中最常用的,也是最复杂的一个组件。它是用户可以专注做一些事情的东西。它的主要功能就是可以和用户进行交互操作,所以几乎所有的Activity都会负责创建一个显示窗口,然后通过setContentView

joye123的博客 7561

Android 四大组件是什么?一篇带你快速入门

Activity是Android应用中用于展示用户界面的组件。通俗来说,每个Activity就代表咱们的一个屏幕,我们可以通过它与应用程序进行交互。你可以把Activity想象成手机屏幕上的一个“页面”。比如,当你打开一个App时,看到的第一个界面就是一个Activity;点击某个按钮跳转到另一个界面,那就是另一个Activity。每个Activity就是一个独立的“屏幕”,负责展示内容和与用户交互。举例:打开微信,首页是一个Activity。

水w的博客 1714

Android 四大开发组件

Android 四大开发组件的学习使用分享。

陈Sir的博客 5855

[特殊字符] Android 四大组件全解析:不只是“会用”,更要“懂协作”!

摘要:本文系统讲解Android四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的协同工作机制。重点解析组件的生命周期管理、通信方式及常见陷阱,如Activity内存泄漏、Service后台限制、BroadcastReceiver的ANR风险等。通过下载场景示例展示组件松耦合协作流程,并对比传统用法与现代架构组件(ViewModel/LiveData/WorkManager)的演进趋势。最后给出组件开发的最佳实践建议,强调应结合Jetpack架

大四在找工作,如果公司有需要的可以联系我13086825462@163.com 1681

Android 四大组件基本介绍

1、基本概况 android 四大组件分别是 activity 、service (服务)、broadcast receiver(广播接收者)、content provider(内容提供者). 2、activity 简介 1) activity 其实就是我们说的界面。 2)Activity 之间通过Intent 进行通信。 3)Activity可以添加一些组件如 button 、view...

Venus 的博客 1370

Android 一一 简述Android四大组件

Android四大基本组件:Activity、BroadcastReceiver广播接收器、ContentProvider内容提供者、Service服务。 Activity:  应用程序中,一个Activity就相当于手机屏幕,它是一种可以包含用户界面的组件,主要用于和用户进行交互。一个应用程序可以包含许多活动,比如事件的点击,一般都会触发一个新的Activity。 BroadcastRec

Guizy 1万+

Android之四大组件、六大布局、五大存储

一.四大组件:          Android四大组件分别为activity、service、content provider、broadcast receiver。 一、android四大组件详解 1、activity (1)一个Activity通常就是一个单独的屏幕(窗口)。 (2)Activity之间通过Intent进行通信。 (3)android

shenggaofei的博客 15万+

Android 学习日志(7) Service 在AndroidManifest.xml 文件中各个属性值的意义

&lt;service android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:isolatedProcess=["true" | "false"] androi

qq_29094161的博客 1213

Android中四大组件

Android四大组件: 一、分类:Activity、Service、Broadcast Receiver、Content Provider。 1、Activity   (1)一个Activity通常就是一个单独的屏幕(窗口)。   (2)Activity之间通过Intent进行通信。   (3)android应用中每一个Activity都必须要在AndroidManifest.

蝌蚪鱼 2260
上一篇: ViewPager+下拉刷新ListView超强组合(实现360手机助手首页的效果)
下一篇: Android四大组件之~~BroadcastReceiver
肖小的人儿
博客等级 码龄12年 29粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值