Il est tard! Essayez d'implémenter la notification Android en Java (débutant)

introduction

Voici l'utilisation de base de la notification Android. Le contenu est simple pour les débutants. Je voudrais expliquer en fonction de l'exemple d'application.

L'environnement de l'exemple d'application est le suivant.

Qu'est-ce que la notification?

Selon la page officielle, il y a la description suivante

Les notifications sont des messages qu'Android affiche en dehors de l'interface utilisateur de l'application, fournissant aux utilisateurs des rappels, des messages d'autres personnes, des informations opportunes de l'application, etc. Les utilisateurs peuvent appuyer sur la notification pour ouvrir l'application ou interagir directement à partir de la notification.

Eh bien, c'est difficile ... Bref, c'est celui affiché sur la barre d'état du smartphone.

Cet exemple d'application

Cette fois, je voudrais créer une application qui "appuie sur un bouton et affiche une notification". Cette fois, c'est l'application pour l'instant. Si vous appuyez sur le contenu après cela, "Ouvrir l'application", etc. ne sera pas mis en œuvre cette fois. Actuellement, Kotlin est le courant dominant pour Android, mais j'aimerais également l'implémenter en Java cette fois-ci.

L'exemple d'application fonctionne cette fois comme suit.

sampleApp.png

la mise en oeuvre

Implémentons-le maintenant. L'écran a un bouton au centre de l'écran. MainActivity.java et ʻactivity_main.xml` sont les suivants.

activtiy_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {        //・ ・ ・(1)
            int importance = NotificationManager.IMPORTANCE_DEFAULT;

            NotificationChannel channel                              //・ ・ ・(2)
                = new NotificationChannel("CHANNEL_ID", "Exemple d'application", importance);

            channel.setDescription("Description / Explication Vous pouvez écrire une description de la notification ici.");     
                  
            NotificationManager notificationManager = getSystemService(NotificationManager.class); 
            notificationManager.createNotificationChannel(channel);      
        }
        
        Button button = findViewById(R.id.button);
        button.setOnClickListener(v -> notifyTest());                //・ ・ ・(3) 
    }

    public void notifyTest() {                     
        NotificationCompat.Builder builder 
            = new NotificationCompat.Builder(this, "CHANNEL_ID")     //・ ・ ・(4)
                .setSmallIcon(android.R.drawable.ic_menu_info_details)   
                .setContentTitle("Titre")                               
                .setContentText("Message message")                      
                .setPriority(NotificationCompat.PRIORITY_DEFAULT);      

        NotificationManagerCompat notificationManager 
                = NotificationManagerCompat.from(this);

        notificationManager.notify(R.string.app_name, builder.build());  
                                                                     //・ ・ ・(5)
    }
}

(1) Pour envoyer des notifications sur Android 8.0 ou supérieur, vous devez enregistrer le canal de notification de l'application dans le système. Exécutez ce code dès le lancement de l'application.

La création d'un canal de notification existant n'effectue aucune opération, il est donc prudent de l'appeler à plusieurs reprises.

Donc, si vous l'appelez avec ʻonCreate`, il n'y aura pas de problème.

(2) Implémentation du canal de notification. Le canal de notification ressemble à ceci: C'est un écran qui peut être vu à partir des paramètres du smartphone-> applications / notifications.

スクリーンショット 2020-09-05 23.30.30.png

(3) Mettez en œuvre le traitement lorsque vous appuyez sur le bouton.

(4) Créez une notification. Vous pouvez définir l'icône, le titre, le message, etc.

スクリーンショット 2020-09-05 23.36.35.png

(5) Affichez la notification. Affichez les notifications avec notificationManager.notify. Passez un ID unique et le résultat de NotificationCompat.Builder.build () comme argument.

Contrôle de fonctionnement

Lorsque vous démarrez l'application et appuyez sur le bouton affiché ... vous devriez voir une notification. Si le mouvement est le même que celui montré dans l'exemple d'application ci-dessus, vous avez réussi!

Résumé

L'échantillon a-t-il fonctionné? Peut-être que cela fonctionne avec le copier-coller. Lors de l'envoi de notifications sur Android 8.0 et supérieur, une implémentation supplémentaire est nécessaire, et je pense que le reste est relativement facile.

Les notifications ont encore de nombreuses fonctionnalités. Vous pouvez également ajouter une barre de progression ou une implémentation lorsque vous appuyez sur une notification. Je voudrais écrire sur la mise en œuvre ici dans le futur.

à plus!

Recommended Posts

Il est tard! Essayez d'implémenter la notification Android en Java (débutant)
Il est tard! Essayez d'implémenter Android Work Manager en Java (débutant)
Essayez d'implémenter Android Hilt en Java
Essayez d'implémenter Yuma dans Kinx
Essayez d'appeler JavaScript en Java
Essayez de développer Spresense avec Java (1)
Résolvez AtCoder Beginner Contest 151 avec Java
Résolvez AtCoder Beginner Contest 150 avec Java
Essayez d'implémenter le traitement asynchrone dans Azure
Résolvez AtCoder Beginner Contest 153 avec Java
Essayez d'exécuter Selenuim 3.141.59 avec eclipse (java)
Essayez une expression If en Java
Résolvez AtCoder Beginner Contest 175 avec Java
Résolvez AtCoder Beginner Contest 160 avec Java
Essayez d'exécuter AWS X-Ray en Java
Essayez d'implémenter Yuma en Java
Résolvez AtCoder Beginner Contest 152 avec Java
Résolvez AtCoder Beginner Contest 156 avec Java
Essayez de résoudre Project Euler en Java
Essayez d'implémenter l'ajout n-aire en Java
Essayez d'utiliser l'API Stream en Java
Appelez l'API de notification Windows en Java
Essayez d'utiliser l'API au format JSON en Java
Essayez d'appeler le service CORBA sur Java 11+
Créons une application de calcul avec Java
Faites TensorFlow en Java. C'est facile, cependant. .. .. ..
De Java à C et de C à Java dans Android Studio
java débutant 4
java débutant 3
java débutant
Essayez d'utiliser Firebase Cloud Functions sur Android (Java)
[AWS IoT] Implémentation de l'autorisation d'appels directs en Java [Java]
Essayez de gratter environ 30 lignes en Java (sortie CSV)
[Android / Java] Exploitez une base de données locale dans la salle
Envoyer des notifications push à l'aide de Notification Hubs en Java
Essayez de créer un babillard en Java
Deuxième décoction: essayez une expression If en Java
Essayez d'utiliser Sourcetrail (version win) avec du code Java
Essayez d'utiliser l'API Cloud Vision de GCP en Java
Essayez d'utiliser Sourcetrail (version macOS) avec du code Java
Essayez la communication en utilisant gRPC sur un serveur Android + Java
Difficultés lors de la mise en œuvre d'Alarm Manager dans Android Studio
Essayez d'utiliser l'analyse syntaxique de l'API COTOHA en Java
Représente le «jour suivant» et le «jour précédent» en Java / Android
[Débutant] Installez l'outil de développement java dans l'environnement de développement cloud9.