0

Я пытаюсь использовать 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")); 

Я не был в состоянии проверить это еще, но даже если он работает, я потерял, как к следующему шагу. Как я собираюсь получить данные из одной базы данных в другую?

ответ

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

Теперь вы должны иметь функцию, которая может создать объект из курсора и вы перебирать курсор создания элементов, а затем добавить их в свой база данных. Возможно, у вас уже есть это, чтобы создавать элементы после запроса таблицы.

Затем вы добавляете этот временный элемент в новую базу данных, используя любую функцию, которую вы использовали ранее.

providerUtils.addFancyItem(tempItem); 

Идите через курсор и все.

Смежные вопросы