千家信息网

Android数据有哪些存储方式

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇文章为大家展示了Android数据有哪些存储方式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。ContentProvider是安卓平台中,在不同应用程序之
千家信息网最后更新 2024年09月22日Android数据有哪些存储方式

本篇文章为大家展示了Android数据有哪些存储方式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制。一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制。并且此种方式忽略了底层的数据存储实现,ContentProvider提供了一种统一的通过Uri实现数据操作的方式。其步骤为:

  1. 在当前应用程序中定义一个ContentProvider。

  2. 在当前应用程序的AndroidManifest.xml中注册此ContentProvider

  3. 其他应用程序通过ContentResolver和Uri来获取此ContentProvider的数据。

  ContentResolver提供了诸如insert(), delete(), query()和update()之类的方法。用于实现对ContentProvider中数据的存取操作。

  Uri是一个通用资源标志符,将其分为A,B,C,D 4个部分:

    A:无法改变的标准前缀,包括;"content://"、"tel://"等。当前缀是"content://"时,说明通过一个Content Provider控制这些数据  

    B:URI的标识,它通过authorities属性声明,用于定义了是哪个ContentProvider提供这些数据。对于第三方应用程序,为了保证URI标识的唯一性,它必须是一个完整的、小写的 类名。例如;"content://com.test.data.myprovider"  

    C:路径,可以近似的理解为需要操作的数据库中表的名字,如:"content://hx.android.text.myprovider/name"中的name

    D:如果URI中包含表示需要获取的记录的ID;则就返回该id对应的数据,如果没有ID,就表示返回全部;

  下面通过是代码示例,演示一下如何在应用之间相互获取数据。

  在应用程序A中,继承ContProvider类,并重写其中方法。

public class MyProvider extends ContentProvider{     @Override     public int delete(Uri uri, String selection, String[] selectionArgs) {         // TODO Auto-generated method stub         return 0;     }      @Override     public String getType(Uri uri) {         // TODO Auto-generated method stub         return null;     }      @Override     public Uri insert(Uri uri, ContentValues values) {         return null;     }      //在Create中初始化一个数据库     @Override     public boolean onCreate() {         SQLiteDatabase db = this.getContext().openOrCreateDatabase("test_db.db3", Context.MODE_PRIVATE, null);         db.execSQL("create table tab(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL)");         ContentValues values = new ContentValues();         values.put("name", "test");         db.insert("tab", "_id", values);         db.close();         return true;     }      //实现query方法     @Override     public Cursor query(Uri uri, String[] projection, String selection,             String[] selectionArgs, String sortOrder) {         SQLiteDatabase db = this.getContext().openOrCreateDatabase("test_db.db3", Context.MODE_PRIVATE, null);         Cursor c = db.query("tab", null, null, null, null, null,null);         return c;     }      @Override     public int update(Uri uri, ContentValues values, String selection,             String[] selectionArgs) {         // TODO Auto-generated method stub         return 0;     } }

在其AndroidManifest.xml中声明此ContentProvider,其中authorities属性定义了此ContentProvider的Uri标识。

在应用程序B中,通过ContentResolver获取程序A的ContentProvider中的数据。

public class MainActivity extends Activity {     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);                  //获取上下文         Context ctx = MainActivity.this;         //获取ContentResolver对象         ContentResolver resolver = ctx.getContentResolver();         //获取Uri对象         Uri uri = Uri.parse("content://com.test.MyProvider");         //获取数据         Cursor c = resolver.query(uri, null, null, null, null);         c.moveToFirst();         for(int i=0; i

应用程序B的运行结果如下,从此图可以发现我们在程序B中成功的获取到了程序A中的数据:

  再观察两个应用程序的结构,如下图,其中红框是应用程序A的程序结构,可以清楚看到其有一个名为"test_db.db3"的数据库,蓝框是应用程序B的程序结构,其并没有任何数据库用于存储数据。由此图,可以确定应用程序B中查询出来的数据结果是来自于应用程序A。

上述内容就是Android数据有哪些存储方式,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

数据 程序 应用 应用程序 方式 存储 数据库 方法 标识 结构 之间 内容 前缀 对象 属性 技能 机制 知识 结果 不同 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 青岛app软件开发哪家好 前后端数据库之间的协议 第四十六条网络安全法 方舟怎么在手机上进入电脑服务器 普陀区综合软件开发收费标准 网络安全漫画好的图片 软件开发怎样做的 魔兽世界8.0甘肃人多的服务器 请求太多服务器 违背了网络安全公司什么东西 wind万德数据库 专利 山东天壹互联网科技有限公司 巅峰战舰怎么设置服务器 数据库合计公式 广州分创互联网科技有限公司 国家安全局维护网络安全 adsl代理服务器搭建教程 网络安全兴趣小组招人 在软件开发中 有哪些阶段 dz域名数据库设置 成都理工大学计算机软件开发如何 思科服务器管理员 云计算中心和网络安全的关系 海曙一站式软件开发企业 windows里增加数据库 excel往数据库导入数据 中国有自己的数据库技术吗 深圳疆界互联网科技有限公司 护苗网络安全有感 数据库基础 教学大纲
0