4 votes

Comment appeler une méthode de non-activité lors d'un clic de notification ?

J'ai une classe java MyClass qui contient une méthode appelée callMethod . Je veux appeler cette méthode lorsque l'utilisateur clique sur la notification.

Voici le code que j'ai utilisé pour générer la notification

public class MainActivity extends AppCompatActivity {

    Button button;
    NotificationManager mNotifyMgr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button);
        mNotifyMgr = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, new Intent(MainActivity.this, MyClass.class), PendingIntent.FLAG_UPDATE_CURRENT);
                Notification notification =
                    new NotificationCompat.Builder(MainActivity.this)
                            .setContentTitle("Notification")
                            .setSmallIcon(R.drawable.ic_launcher)
                            .setContentText("Downloaded")
                            .setContentIntent(pendingIntent)
                            .build();

                mNotifyMgr.notify(1,notification);
            }
        });
    }
}

Et ci-dessous, l'implémentation de MyClass

public class MyClass {
    public void callMethod(){
        System.out.println("Notification clicked");
    }
}

S'il vous plaît, aidez-moi, je suis coincé dans ce problème depuis un certain temps maintenant.

4voto

David Wasser Points 23169

Vous pourriez faire quelque chose comme ça :

Lors de la création de votre PendingIntent à mettre dans le Notification :

Intent notificationIntent = new Intent(MainActivity.this, MyClass.class);
notificationIntent.putExtra("fromNotification", true);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, notificationIntent,
         PendingIntent.FLAG_UPDATE_CURRENT);

Maintenant, dans MyClass.onCreate() :

if (getIntent().hasExtra("fromNotification")) {
    callMethod();
}

1voto

Ankit Kumar Points 1938
 @Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    //notification callbacks here in activity
    //Call method here from non activity class.
    Classname.methodName();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X