Android 将包裹写入ContentProvider?

Android 将包裹写入ContentProvider?,android,Android,我有一个很大的东西,可以打包。它太大了,我不想考虑手动将所有这些值放入我的ContentProvider。因此,由于我的对象已经是可包裹的: 有没有办法将整个可包裹对象写入我的ContentProvider 有没有办法将整个可包裹对象写入我的ContentProvider 不,原因很简单,包裹不是用来储存的。它只用于跨流程边界传输数据。我找到了解决方案!使用将整个对象转换为json字符串: /** * * @param context * @param email * @param cu

我有一个很大的东西,可以打包。它太大了,我不想考虑手动将所有这些值放入我的ContentProvider。因此,由于我的对象已经是可包裹的:

有没有办法将整个可包裹对象写入我的ContentProvider

有没有办法将整个可包裹对象写入我的ContentProvider


不,原因很简单,包裹不是用来储存的。它只用于跨流程边界传输数据。

我找到了解决方案!使用将整个对象转换为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。这很好。我试试看!