当前位置: 首页 > news >正文

Android --- Content Provider是使用示例,通俗易懂

当两个应用程序之间需要共享数据时,可以通过 Content Provider 来实现。在这个示例中,我们将创建一个简单的 Content Provider,让 App_B 暴露人口总数的数据,并由 App_A 来获取这个数据。

首先,我们来创建一个简单的示例:

1.创建 Content Provider(App_B)

在 App_B 中,首先创建一个 Content Provider,以暴露人口总数的数据。

public class PopulationProvider extends ContentProvider {// 定义 URI 和列名public static final String AUTHORITY = "com.example.appb.populationprovider";public static final Uri POPULATION_URI = Uri.parse("content://" + AUTHORITY + "/population");public static final String POPULATION_COLUMN = "population";@Overridepublic boolean onCreate() {// 初始化 Content Providerreturn true;}@Nullable@Overridepublic Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection,@Nullable String[] selectionArgs, @Nullable String sortOrder) {if (uri.equals(POPULATION_URI)) {// 执行查询操作并返回结果MatrixCursor cursor = new MatrixCursor(new String[]{POPULATION_COLUMN});cursor.addRow(new Object[]{getPopulationFromDatabase()});return cursor;} else {throw new IllegalArgumentException("Unknown URI: " + uri);}}@Nullable@Overridepublic String getType(@NonNull Uri uri) {return "vnd.android.cursor.item/vnd." + AUTHORITY + ".item";}// 模拟从数据库获取人口总数private int getPopulationFromDatabase() {// 这里可以是从数据库或其他数据源获取真实的人口总数return 1000000;}// 其他方法(insert、update、delete)根据需要实现
}

2.声明 Content Provider(App_B)

在 App_B 的 AndroidManifest.xml 文件中声明这个 Content Provider:

<providerandroid:name=".PopulationProvider"android:authorities="com.example.appb.populationprovider"android:exported="true" />

3.使用 Content Resolver 获取人口总数(App_A)

在 App_A 中,我们使用 Content Resolver 来获取人口总数的数据。

public class MainActivity extends AppCompatActivity {// ...private void getPopulationFromAppB() {Uri populationUri = Uri.parse("content://com.example.appb.populationprovider/population");ContentResolver contentResolver = getContentResolver();Cursor cursor = contentResolver.query(populationUri, null, null, null, null);if (cursor != null && cursor.moveToFirst()) {int population = cursor.getInt(cursor.getColumnIndex("population"));// 使用获取到的人口总数// ...}if (cursor != null) {cursor.close();}}// ...
}

在 getPopulationFromAppB() 方法中,我们使用 Content Resolver 来查询 App_B 的 Content Provider,获取人口总数的数据。然后可以使用获取到的人口总数进行进一步的处理和展示。

这就是一个简单的示例,演示了如何通过 Content Provider 实现从一个应用程序获取数据到另一个应用程序的过程。在实际应用中,你可能需要更多的逻辑和安全性来设计和实现这种数据共享过程。

http://www.lryc.cn/news/291654.html

相关文章:

  • 02-opencv简单实例效果和基本介绍-上
  • 中科大计网学习记录笔记(一):Internet | 网络边缘
  • Shell脚本——免交互
  • 【数据分享】1929-2023年全球站点的逐月最高气温数据(Shp\Excel\无需转发)
  • CentOS gui 图形界面显示文字乱码
  • [Vue入门]Vue的使用:vue对象+data+el+插值表达式
  • Tomcat运维
  • 前端开发基于Qunee绘制网络拓扑图总结-02
  • 牛客——中位数图(连续子数组和二维前缀和)
  • Java:搭建eladmin复习mvn、springboot、vue等
  • JavaScript入门
  • Redis单机-主从集群-哨兵集群-分片集群 搭建教程
  • 湘潭大学-计算机网络-补考
  • SOME/IP SD 协议介绍(五)使用SOME/IP-SD宣布非SOME/IP协议的协议。
  • svn 安装路径
  • Skywalking trace UI页面中字段信息详解,包括端点、跨度类型和Peer
  • 【 USRP 相控阵】X波段相控阵开发平台用户指南
  • C++关键词auto详解
  • 【GPU驱动开发】- GPU架构流程
  • UE5在VisualStudio升级后产生C++无法编译的问题
  • 目标检测:1预备知识
  • 【Linux取经路】进程控制——进程等待
  • 虹科干货 | 如何使用nProbe Cento构建100 Gbit NetFlow 传感器
  • Web前端入门 - HTML JavaScript Vue
  • (Sping Xml方式整合第三方框架)学习Spring的第十天
  • 单片机驱动多个ds18b20
  • GitLab16.8配置webhooks、Jenkins2.4配置GitLab插件实现持续集成、配置宝塔面板实现持续部署(其三)
  • 鸿蒙会取代Android吗?听风就是雨
  • 检测CUDA 是否能访问GPU时回应速度慢【笔记】
  • 大模型运行成本对比:GPT-3.5/4 vs. 开源托管