0

BroadcastReceiverからデバイスにインストールされているapkを起動/開く必要があります。

コードは次のとおりです。

パブリッククラスC2DMMessageReceiverはBroadcastReceiverを拡張します{

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();

    Log.w("C2DM", "Message Receiver called");
    if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) {
        Log.w("C2DM", "Received message");
        ComponentName toLaunch = new ComponentName("es.mypackage","es.mypackage.myapplication");
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER); 
        intent.setComponent(toLaunch); 
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);

デバイスはブロードキャストを受信しますが、予期しない問題で失敗します。

他のapkを起動するコードは、アプリケーションの他の部分で正常に機能します。

ブロードキャストから他のアプリケーションを起動することは可能ですか?

どうもありがとうございます。

4

1 に答える 1

1

私の経験によると、C2DMレシーバーからアクティビティを開始することはできません。そのための回避策を見つけました。サービスを作成し、そのサービスからアクティビティを開始し、アクティビティの開始後にサービスを停止します。

ありがとうございました、

于 2012-04-09T08:59:35.943 に答える