0

我試圖用this方法將數據庫內容從我的免費應用程序複製到我的付費應用,但我挺在最後一步丟失:1分貝到另一個與內容提供商的內容複製

檢查提供商的存在&將數據加載到付費應用程序中。

我可以檢查像這樣的供應商的存在:

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")); 

我沒能還測試,但即使它的工作原理,我丟失下一步。我如何將數據從一個數據庫中導出到另一個數據庫中?

回答

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); 

遍歷遊標,就是這樣。