我正在尝试使用this方法将数据库内容从我的免费应用程序复制到我的付费应用程序,但我在最后一步中迷失了方法:
检查提供者是否存在&将数据加载到付费应用中。
我可以检查是否存在提供者:
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"));
我还没有能够测试这个,但即使它有效,我也不知道下一步了。我是怎么想把数据从一个数据库中取出来的?
答案 0 :(得分: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);
通过光标迭代,就是这样。