如何编组/解组 ContentValues 以将泛型类型插入 ContentProvider?

2024-02-09

我想将通用 POJO 放入 ContentValues 中并在 ContentProvider 中解组它。

我一直在绞尽脑汁地思考:Parcelables、ContentValues 和插入 SQLite 关于:http://njzk2.wordpress.com/2013/05/31/map-to-contentvalues-abusing-parcelable/ http://njzk2.wordpress.com/2013/05/31/map-to-contentvalues-abusing-parcelable/

如何编写在android的Sqlite中插入数据的通用代码 https://stackoverflow.com/questions/23244834/how-to-write-a-common-code-for-inserting-data-in-androids-sqlite

我一直在尝试通过 ContentProvider 将 android.location.Location 插入到 SQLite 中:

Location loc = mLocationClient.getLastLocation();
myParcel = android.os.Parcel.obtain();
loc.writeToParcel(myParcel, 0);

ContentValues values = ContentValues.CREATOR.createFromParcel(myParcel );

用地块填充值。

问题1) 这是我的 ContentProvider.insert 方法:

@Override
public Uri insert( final Uri uri, final ContentValues values ){
SQLiteDatabase db = Mydatabase.getWritableDatabase();

//db.insert() doesn’t unmarshal the values??
db.insert(  myTABLE_NAME, “”, values);

Uri result = null;
db.close();
return result;
}

这失败了,因为 db.insert() 没有解组值(我相信) 插入 android.database.sqlite.SQLiteException 时出错:INSERT INTO myTABLE_NAME() VALUES (NULL)

问题2) 有什么方法可以先解组值,然后将其编组回另一个 ContentValues 变量吗?也许w/ getKey()???


这有效:

HashMap hm = new HashMap();
Location loc = mLocationClient.getLastLocation();
hm.put("LOCATIONS", loc);

android.os.Parcel myParcel = android.os.Parcel.obtain();    
myParcel.writeMap(hm);
myParcel.setDataPosition(0);

ContentValues values = ContentValues.CREATOR.createFromParcel(myParcel);

getContentResolver().insert(MyUri, values);

进而

@Override
public Uri insert( final Uri uri, final ContentValues oldvalues ){
SQLiteDatabase db = GAELdatabase.getWritableDatabase();

Uri result = null;
Location loc = (Location)oldvalues.get("LOCATIONS");

ContentValues values = new ContentValues();

values.put("ALTITUDE", loc.getAltitude());//meters above sea level
values.put("LATITUDE", loc.getLatitude());
values.put("LONGITUDE", loc.getLongitude());

long rowID = db.insert( "MyTABLE_NAME", "", values);
db.close();
return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编组/解组 ContentValues 以将泛型类型插入 ContentProvider? 的相关文章

  • ClassCastException:android.app.Application

    导致错误的类如下 package com extrasmart import android app Activity import android os Bundle import android view View import and
  • 具有多个表的 ContentProvider

    我想实施一个ContentProvider操作多个表 这是我到目前为止所尝试的 我写了一个JavaInterface表示每个表应在其 CRUD 类中实现的 CRUD 操作 public interface CRUDHandler UPDAT
  • 动态设置ContentProvider的权限

    也许标题有点误导 我的问题是我有一个 Android 库项目 该项目在两个标准 Android 项目之间共享 一个用于应用程序的免费版本 另一个用于付费版本 该库当前拥有 ContentProvider 的代码 包括一个合约类 其中包含多个
  • 两个内容提供商访问同一个数据库

    Hi all 我想知道如果希望两个完全不同的 Android 应用程序访问和操作同一个数据库 是否存在一种普遍首选的实现范例值得尊重 是否建议甚至技术上可以这样做 这样的架构会是什么样子 截至目前 我正在考虑让这两个应用程序实现自己的Con
  • ContentProvider不会出现在数据和同步区域

    我试图让自定义 ContentProvider 显示在 数据和同步 下 但遇到了一些问题 也就是说 它没有出现 具体内容 我的 AndroidManifest xml 有提供者和服务
  • 使密封类层次结构可解析

    我有类似下面的内容 我想将它们作为意图参数传递 sealed class BasketType Parcelable class BasketOne val basketId String BasketType constructor pa
  • 服务暂停时更新活动数据

    假设我有一个包含数据对象的活动 它根据该对象更新其 GUI 组件 现在假设它已暂停 调用 OnPause 但未停止或销毁 同时 收到推送通知 intentservice 已启动 我需要使用推送通知对象更新该对象 以便在应用程序恢复时更新 g
  • SyncAdapter periodsync() 未触发

    我正在尝试弄清楚syncAdapter是如何工作的 我使用sampleSync Adapter作为示例 起点 并基于它进行了我的第一次测试 唯一的区别是我不使用默认的联系人提供程序 但我需要自己的联系人提供程序之一 此方法与 SampleS
  • 无法找到资源 ID - Android Gradle 插件 3.4.0

    当从多模块项目中的 Android Gradle Plugin 3 3 2 迁移到 3 4 0 并执行时connectedAndroidTest我看到一个致命的异常 Google Play 服务共享类StringResourceValueR
  • 空值可以传递给包裹吗?

    是否可以写null to Parcel当分割一个对象时 得到null再次解压时又回来了 假设我们有以下代码 public class Test implements Parcelable private String string null
  • 如何处理 REST 调用、数据持久化、同步和观察 ContentProvider

    我知道这个问题已经被问了太多次了 但我认为我想要解决的问题有点不同 也许更复杂 我将开发一个使用RESTful Web 服务并需要具备以下要求 该应用程序应该以列表和详细方式显示一些书籍及其作者和编辑 该应用程序还应该允许搜索书籍 书籍 作
  • 使用 SyncAdapter 同步联系人,工作

    我目前正在开发一个 android 项目 在该项目中我想将移动联系人同步到服务器 经过大量研究后SyncAdapter并在中创建帐户accountmanager 我自己学会了 但是有两件事我不明白 我在谷歌中搜索了这些内容但无法得到完美的答
  • 使用 FileProvider 共享内部存储中的图像

    我的应用程序的内部存储中存储了一些文件 我想在外部应用程序中打开它们 例如 将图像发送到图库以供查看 我已经设置了一个FileProvider这样做 From AndroidManifest xml
  • 无法从三星设备上的通话记录中删除短信日志

    我尝试通过我的应用程序从设备中删除所有短信 但由于某种原因 短信日志仍然出现在某些三星设备的通话记录中 我尝试了一种更 激进 的方法 并使用以下 URI 删除ContentResolver content call log calls co
  • 如何从 Android 设备检索 RCS 消息

    我如何在android中检索RCS消息 我可以使用 contentproviders 检索 SMS MMS 是否有适用于 Android 的 RCS 消息传递的 URI 我发现我的设备有这个 contentprovider 可用 所以我尝试
  • 哪个线程运行 ContentProvider?

    如果我从 Activity 调用 ContentProvider ContentProvider 会在哪个线程中运行 例如 如果 Activity 被终止并且查询正在 ContentProvider 中执行 会发生什么情况 假设您的网络查询
  • 如何使用 SyncAdapter 处理远程服务器的 RESTful 更新

    我观看了 Google I O REST 演讲并阅读了幻灯片 http www google com events io 2010 sessions developing RESTful android apps html http www
  • Android 错误 - close() 从未在数据库上显式调用

    我应该在代码的哪里调用 close LogCat 返回此错误 close 从未在数据库上显式调用 android database sqlite DatabaseObjectNotClosedException 应用程序未关闭此处打开的游标
  • 如何在同一设备上运行的 Android 应用程序之间传输文件?

    我正在编写一个与 RESTful 服务交互的 Android 应用程序 该 Web 服务本质上是一个文件系统 并提供元数据以及对文件的 CRUD 访问 我的应用程序检索元数据 并通过ContentProvider 我需要添加与我的应用程序在
  • Android 的 Intent 和 Parcelable 对象

    为什么我需要打包我的对象 即使我只需将其发送到同一任务的另一个线程 实际上 我需要打开一个甚至可以在同一线程 主线程 上运行的活动 换句话说 为什么 Google 不提供一个 startActivity 版本 它采用通用对象广告参数而不是捆

随机推荐