Android 将包裹写入ContentProvider?
我有一个很大的东西,可以打包。它太大了,我不想考虑手动将所有这些值放入我的ContentProvider。因此,由于我的对象已经是可包裹的: 有没有办法将整个可包裹对象写入我的ContentProvider 有没有办法将整个可包裹对象写入我的ContentProviderAndroid 将包裹写入ContentProvider?,android,Android,我有一个很大的东西,可以打包。它太大了,我不想考虑手动将所有这些值放入我的ContentProvider。因此,由于我的对象已经是可包裹的: 有没有办法将整个可包裹对象写入我的ContentProvider 有没有办法将整个可包裹对象写入我的ContentProvider 不,原因很简单,包裹不是用来储存的。它只用于跨流程边界传输数据。我找到了解决方案!使用将整个对象转换为json字符串: /** * * @param context * @param email * @param cu
不,原因很简单,包裹不是用来储存的。它只用于跨流程边界传输数据。我找到了解决方案!使用将整个对象转换为json字符串:
/**
*
* @param context
* @param email
* @param customer
*/
public static void insertCustomer(Context context, String email, Customer customer) {
String json = new Gson().toJson(customer);
ContentValues values = new ContentValues();
values.put(DatabaseAdapterCustomer.COLUMN_CUSTOMER_EMAIL, email);
values.put(DatabaseAdapterCustomer.COLUMN_CUSTOMER_DATA, json);
final ContentResolver resolver = context.getContentResolver();
resolver.insert(ContentProviderCustomer.CONTENT_URI, values);
}
如果重新选择,只需执行以下操作:
String json = cursor.getString(cursor.getColumnIndex(DatabaseAdapterCustomer.COLUMN_CUSTOMER_DATA));
return new Gson().fromJson(json, Customer.class);
为什么不写一个MyObject.toContentValues呢?你必须使用ContentResolverinsert吗?你不能使用ContentResolvercall吗?很有趣。从未听说过ContentResolvercall有什么区别。也许我可以用它。你可以传递android.os.Bundle而不是android.content.contentvalues。这很好。我试试看!