7

さて、私は通知で実行されるサービスを持っています。ユーザーが通知をクリックしたときに開かれた新しいインテントでエクストラを配置したいので、MainActivity開いたときにエクストラを取得できます。私はさまざまな方法で試しましたが、それを機能させる方法がわかりません。

これが私が試したことです:

これはマイサービスです

Intent intent = new Intent(MyService.this, MainActivity.class);
                    intent.putExtra("EXTRA", StringTEST);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
                    PendingIntent contentIntent = PendingIntent
                        .getActivity(getApplicationContext(),
                                     0, intent, 0);

これはアクティビティを正常に開きますが、余分なものを取得できませんか?? これは私がそれを取得しようとした方法です:

主な活動

@Override
public void onNewIntent(Intent intent){
    Bundle extras = intent.getExtras();
    if(extras != null){
        String name = extras.getString("EXTRA");
        System.out.println(name);
    }
}

@Override
protected void onResume() {
    Bundle extras = getIntent().getExtras();
    System.out.println(extras+"");
    if (extras != null) {
        try {
            onNewIntent(getIntent());
            Intent i = getIntent();
            String name = i.getStringExtra("EXTRA");
            System.out.println(name);
            currentDir = new File(name);

            changeFiles();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    super.onResume();
}

これらは私が試した2つの方法ですが、それでもnullになります...何が間違っていますか?

ありがとう

4

2 に答える 2

31

あなたの問題はここにあると思います:

PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(),
                           0, intent, 0);

あなたはあなたに一致し、あなたのエキストラを含む に戻ってくるintentことgetActivity()を期待しています。残念ながら、システム内にあなたに一致する(あなたのエクストラを考慮せずに) がすでに浮かんでいる場合は、代わりにそれを返します。PendingIntentIntentPendingIntentIntentIntentgetActivity()PendingIntent

これが問題かどうかを確認するには、次のことを試してください。

PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(),
                           0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

PendingIntentこれは、システム内のどこかに一致するがすでに存在する場合Intent、エクストラをパラメータ内のものに置き換える必要があることを示していintentます。

于 2013-01-21T09:43:12.467 に答える