3

Android C2DM を Android ライブラリ プロジェクトに追加しています。JumpNoteChrome To Phoneに含まれているcom.google.android.c2dm パッケージから始めました。このパッケージを使用するには、コンストラクターへの引数として送信者 ID を取るC2DMBaseReceiverサービスをサブクラス化する必要があります。JumpNote では、この引数は構成クラスでハードコーディングされた静的変数を使用して初期化されます。ただし、同時に実行されている複数のアプリで使用される可能性のある Android ライブラリ プロジェクトでは、ハードコードされた静的変数を使用できないと思います (つまり、複数のアプリが静的変数にアクセス/変更します)。

静的変数を使用せずに Sender Id を初期化する方法を考えてみましたが、これまでのところ困惑しています。

明白な解決策は、マニフェストまたはリソース文字列、または 2 つの組み合わせを使用することです。マニフェストで。ただし、静的コンテキストから PackageManager または ResourceManager への参照を取得できないようです。そのため、C2DMBaseReceiver のコンストラクターに渡すような方法でメタ データを取得する方法はありません。

何か足りないので教えてください!前もって感謝します。

4

2 に答える 2

3

同じ問題がありました。
assetsフォルダーの下にあるプロパティファイルを使用して解決しました。静的構成ヘルパー クラスを使用して、プロパティを静的に読み込むことができます。アプリケーションが初めて読み込まれるときに、アプリケーション コンテキストを使用してプロパティ ファイルを取得できます。

例: 1. 静的構成を初期化 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myConfig = new WLConfig(getApplication());
}

  1. 次に、構成クラスで使用します: myProperties.load(context.getAssets().open("myclient.properties"));

  2. 送信者の電子メールを取得します: return myProperties.getProperty(WL_C2DM_SENDER)

于 2011-01-31T11:13:33.227 に答える
1

ただし、同時に実行されている複数のアプリで使用される可能性のある Android ライブラリ プロジェクトでは、ハードコードされた静的変数を使用できないと思います (つまり、複数のアプリが静的変数にアクセス/変更します)。

「複数の同時実行アプリ」には、それぞれ独自のプロセスで実行されるため、静的変数の独自のコピーがあります。

于 2010-10-19T00:28:02.910 に答える