通知服务额外点击通知点击,怎么样?

Rot*_*art 5 service android android-intent android-service android-notifications

好吧,我有一个通知运行的服务,我想在用户点击通知时MainActivity打开额外的新意图,所以当打开时我可以得到额外的.我尝试过不同的方法,但我只是找不到如何让它发挥作用.

这是我尝试过的:

这是MyService

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);
Run Code Online (Sandbox Code Playgroud)

这打开活动很好,但我不能得到额外的?这就是我试图得到它的方式:

主要活动

@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();
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试的两种方式,但我仍然无效......我做错了什么?

谢谢

Dav*_*ser 28

我猜你的问题在这里:

PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(),
                           0, intent, 0);
Run Code Online (Sandbox Code Playgroud)

您传递intentgetActivity()并期望你会得到一个PendingIntent符合您Intent和您的包括演员.不幸的是,如果PendingIntent系统中已经存在与您匹配的浮动Intent(考虑您的Intent额外内容),那么getActivity()将返回给您PendingIntent.

要查看这是否是问题,请尝试以下操作:

PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(),
                           0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Run Code Online (Sandbox Code Playgroud)

这表示如果已经有一个PendingIntentIntent系统中的某个位置相匹配,那么它应该用intent参数中的附加内容替换附加内容.

  • 这对我来说很有帮助。谢谢!:) (3认同)