2

同じアプリの無料バージョンとプレミアムバージョンがあります(ほぼ同じコード、あちこちに「if」が付いた同じクラス、マニフェストに異なるパッケージ、マニフェストに同じプロセス名)。メインアクティビティは、IMPLICITインテントを使用して、サービスを呼び出していくつかの処理を実行します。

両方のアプリを携帯電話にインストールすると、プレミアムアクティビティが実際に「無料」サービスを開始することもあれば、「プレミアム」サービスを開始することもあります。カテゴリとパッケージマネージャをいじってみましたが、複雑すぎるようです。

質問:

  1. Androidは、同じインテントに応答する複数のコンポーネントをどのように処理しますか?
  2. 私がやろうとしていることをどのように行いますか:複数のアプリで同じサービスを使用していて、すべてのアプリから1つのインスタンスのみを呼び出したいですか?
4

1 に答える 1

0

インテントにブール値のisPremiumを追加できると思います。当然、これらの「if」がさらに必要になります。

アクティビティ:

//send broadcast
Intent serviceStarted = new Intent(Actions.ACTION_START_SERVICE);
serviceStarted.putExtra(Extras.EXTRA_PREMIUM_VERSION, PREMIUM_VERSION);
sendBroadcast(serviceStarted);

レシーバー:

if (!intent.getExtras().getBoolean(Extras.EXTRA_PREMIUM_VERSION)) {
    Log.v(TAG, " - ignoring wrong version");
    return;
}
于 2011-09-06T10:46:29.437 に答える