[英]Copy contents of one db to another with content providers
我正在嘗試使用此方法將數據庫內容從免費應用程序復制到付費應用程序,但是在最后一步我很迷路:
檢查提供者的存在並將數據加載到您的付費應用中。
我可以像這樣檢查提供者的存在:
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"));
我還沒有能夠對此進行測試,但是即使它可以工作,我還是對下一步感到迷惑。 我要如何將數據從一個數據庫獲取到另一個數據庫?
所以我解決了這個問題。 一點也不麻煩。
我對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);
遍歷光標就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.