0

我正在尝试使用方法将数据库内容从我的免费应用程序复制到我的付费应用程序,但在最后一步我很迷茫:

检查提供者的存在并将数据加载到您的付费应用程序中。

我可以像这样检查提供者的存在:

    List<ProviderInfo> providers = getPackageManager().queryContentProviders(
    "com.mypackagename.content.MyProvider",android.os.Process.myUid(), 0);

但我不知道如何进行复制?

我尝试获得这样的 ContentResolver:

    ContentResolver resolver = getContentResolver();
    ContentProviderClient client = resolver.acquireContentProviderClient(Uri.parse("content://com.mypackagename"));

我还没有能够对此进行测试,但即使它有效,我也会迷失下一步。我如何将数据从一个数据库中获取到另一个数据库中?

4

1 回答 1

1

所以我解决了这个问题。这根本不是太棘手。

我的 ContentProviderClient 代码走在了正确的轨道上。

ContentResolver resolver = getContentResolver();
ContentProviderClient client = resolver.acquireContentProviderClient(Uri.parse("content://com.mypackagename.free"));

然后,您需要要从中复制的表的 URI,我相信这些必须是硬编码的。

Uri CONTENT_URI_TABLE1 = Uri.parse("content://com.mypackagename.free/table1");

然后需要查询客户端

Cursor table1Cursor = client.query(CONTENT_URI_TABLE1, null, null, null, null);

现在你需要一个函数,它可以从游标创建一个对象,你遍历游标创建项目,然后将它们添加到你的数据库中。在查询表后,您可能已经有了它来创建项目。

table1Cursor.moveToFirst();
FancyItem tempItem = providerUtils.createFancyItemFromCursor(table1Cursor);

然后,您使用之前用来执行此操作的任何函数将此临时项添加到新数据库中。

    providerUtils.addFancyItem(tempItem);

遍历光标,就是这样。

于 2012-07-04T08:01:26.650 回答