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 に答える