ここでは、Eclipse の 2 つの異なるプロジェクトに 2 つのアプリケーションがあります。1 つのアプリケーション (A) は、最初に開始されるアクティビティ (A1) を定義します。次に、このアクティビティから、2 番目のプロジェクト (B) の 2 番目のアクティビティ (B1) を開始します。これはうまくいきます。
次の方法で開始します。
Intent intent = new Intent("pacman.intent.action.Launch");
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
ここで、ブロードキャスト レシーバーを使用して、2 つのアクティビティ間でインテントを送信したいと考えています。アクティビティ A1 では、次の方法でインテントを送信します。
Intent intent = new Intent("pacman.intent.action.BROADCAST");
intent.putExtra("message","Wake up.");
sendBroadcast(intent);
このブロードキャストを担当するアクティビティ A1 のマニフェスト ファイルの部分は次のとおりです。
<activity android:name="ch.ifi.csg.games4blue.games.pacman.controller.PacmanGame" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.BROADCAST" />
</intent-filter>
</activity>
受信アクティビティでは、マニフェスト ファイルで次のように受信者を定義します。
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".PacmanGame"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="pacman.intent.action.Launch" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<receiver android:name="ch.ifi.csg.games4blue.games.pacman.controller.MsgListener" />
</activity>
</application>
クラス メッセージ リスナは次のように実装されます。
public class MsgListener extends BroadcastReceiver {
/* (non-Javadoc)
* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
*/
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("Message at Pacman received!");
}
}
残念ながら、メッセージは受信されません。アクティビティ A1 のメソッドが呼び出されますが、B1 でインテントを受け取ることはありません。
これを解決するためのヒントはありますか?どうもありがとう!