본문 바로가기
안드로이드 자바

[JAVA][Android] 버튼으로 notification 알림 띄우기

by teamnova 2021. 8. 10.
728x90

안녕하세요

 

오늘은 버튼을 클릭하여

 

notification 알림을 띄어보겠습니다.

 

먼저 아래 스틱코드 링크에서 해당 코드를 '즐겨찾기' 해주세요

 

https://stickode.com/detail.html?no=2314 

 

스틱코드

 

stickode.com

 


 

안드로이드 스튜디오에서

 

아래와 같이 스틱코드를 활용하여 코드들을 생성합니다.

 

*스틱코드 포스팅의 태그를 입력하면 자동으로 탭이 생성되고

탭을 클릭하면 전체 코드를 불러 올 수 있습니다.

 

1. MainActivity.java

 

 

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    // Channel에 대한 id 생성
    private static final String PRIMARY_CHANNEL_ID = "primary_notification_channel";
    // Channel을 생성 및 전달해 줄 수 있는 Manager 생성
    private NotificationManager mNotificationManager;

    // Notification에 대한 ID 생성
    private static final int NOTIFICATION_ID = 0;

    // Notification을 호출할 button 변수
    private Button button_notify;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button_notify = findViewById(R.id.notify);
        button_notify.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                sendNotification();
            }
        });
        createNotificationChannel();

    }

    //채널을 만드는 메소드
    public void createNotificationChannel()
    {
        //notification manager 생성
        mNotificationManager = (NotificationManager)
                getSystemService(NOTIFICATION_SERVICE);
        // 기기(device)의 SDK 버전 확인 ( SDK 26 버전 이상인지 - VERSION_CODES.O = 26)
        if(android.os.Build.VERSION.SDK_INT
                >= android.os.Build.VERSION_CODES.O){
            //Channel 정의 생성자( construct 이용 )
            NotificationChannel notificationChannel = new NotificationChannel(PRIMARY_CHANNEL_ID
                    ,"Test Notification",mNotificationManager.IMPORTANCE_HIGH);
            //Channel에 대한 기본 설정
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.RED);
            notificationChannel.enableVibration(true);
            notificationChannel.setDescription("Notification from Mascot");
            // Manager을 이용하여 Channel 생성
            mNotificationManager.createNotificationChannel(notificationChannel);
        }

    }

    // Notification Builder를 만드는 메소드
    private NotificationCompat.Builder getNotificationBuilder() {
        NotificationCompat.Builder notifyBuilder = new NotificationCompat.Builder(this, PRIMARY_CHANNEL_ID)
                .setContentTitle("You've been notified!")
                .setContentText("This is your notification text.")
                .setSmallIcon(R.drawable.ic_android);
        return notifyBuilder;
    }

    // Notification을 보내는 메소드
    public void sendNotification(){
        // Builder 생성
        NotificationCompat.Builder notifyBuilder = getNotificationBuilder();
        // Manager를 통해 notification 디바이스로 전달
        mNotificationManager.notify(NOTIFICATION_ID,notifyBuilder.build());
    }
}

 

 

 

2. activity_main.xml

 

 

 

 

3. 이미지 에셋 설정

 

file - new - Image Asset으로 가서 Name을 ic_android로 설정해서 next - finish 해주세요

 

 

4. 결과

 

버튼을 클릭하면 화면 상단에 알림 창이 뜹니다.

타이틀텍스트, 아이콘이 정상적으로 작동 되는 것을 확인 할 수 있습니다.