10

2 つのアプリケーション A と B があるとします。

AアプリからBアプリのリソース(ドローアブル、画像、文字列)にアクセスしたい。どうすればいいですか?

編集:

Android プロジェクトをライブラリ プロジェクトとして指定することもできます。これにより、それに依存する他のプロジェクトと共有できます。Android プロジェクトをライブラリ プロジェクトとして指定すると、デバイスにインストールできなくなります。

Android マーケットで自分のライブラリを使用できないということですか? 私の目的は、アプリケーション A のデフォルトのリソースを使用することですが、誰かがアプリケーション B をダウンロードしてリソースを使用できる場合も同様です。

4

5 に答える 5

23

あなたが両方のアプリケーションの開発者である場合、適切なアプローチは、他の人が指摘したように、Android ライブラリ プロジェクトを作成し、それをアプリ間で共有することです。

それにもかかわらず、これがあなたのアプリでなくても、別のアプリからリソースにアクセスできます。

Resources res = context.getPackageManager().getResourcesForApplication("com.example.foo")
于 2011-08-26T14:04:30.477 に答える
5

両方のアプリが独自のもので、ビルド時にこれらのリソースをバンドルする場合:

Android Library Projectを作成し、必要なすべてのリソースをその中に入れて、両方のアプリから参照します。


編集して編集する: Android マーケットのライブラリを使用できます。単独で使用(コンパイル)することはできません。ライブラリを使用するアプリを作成する必要があります。そのアプリをビルドすると、必要なすべてのコンテンツが基本的にライブラリから取得され、apk にコピーされます。いつものように市場に出すことができます。

これは、実行時にデバイスにダウンロードされるアプリからリソースにアクセスする場合には機能しません。ライブラリ プロジェクトは、それを使用するアプリをビルドするときにすべてのリソースをバンドルします。Peter Knego の応答は、実行時にアクセスする場合の正しい応答です。

于 2011-08-26T13:42:00.770 に答える
1

それらの両方のアプリケーションがあなたのものであれば可能です。または、これら両方のアプリケーションに任意の Android ライブラリを使用できます。必要に応じて、この種の作業用に独自のAndroid ライブラリを作成することもできます。サンクス。

于 2011-08-26T13:51:14.133 に答える
0

上記のピーターの答えは素晴らしいですが、もう少し詳しく説明したいと思います...

appA と appB を制御し、appA で appB からドローアブルを取得する場合は、次のようにします。

  1. appB にあるときにドローアブルの識別子を取得します (例: R.drawable.iconInAppB)
  2. 次に、appAで

    Resources res = context.getPackageManager().getResourcesForApplication("com.example.appB");
    
        Drawable d = res.getDrawable(integer);
    //integer was what appB assigned to R.drawable.iconInAppB
    

*注意: 割り当てられる整数 IDR.drawable.iconInAppBは時間の経過とともに変化するため、ハードコーディングに依存しないでください。キーと値のペア (String resourceName、int resourceId) を appB のデータベースに保存し、コンテンツ プロバイダーを使用してそれらにアクセスします。

于 2015-01-11T23:24:59.797 に答える