반응형
상단 알림창에 알림을 띄우고 알림메시지를 터치하면 앱을 실행하는 예제를 만들어보겠습니다.
이전의 예제를 이미 보신분이라면 EditText를 추가하고 MainActivity.java 안의 추가된 코드만 수정해서 실행해보시면 될 것 같습니다.
1. activity_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">
<EditText
android:id="@+id/et"
android:hint="이름을 입력하세요"
android:gravity="center"
android:inputType="text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="52dp"
app:layout_constraintBottom_toTopOf="@+id/bt"
tools:layout_editor_absoluteX="-16dp" />
<Button
android:id="@+id/bt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="알림창"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
2. MainActivity.java
package com.everyshare.notificationtest;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
Button bt;
EditText et;
NotificationManager manager;
NotificationCompat.Builder builder;
private static String CHANNEL_ID = "channel1";
private static String CHANEL_NAME = "Channel1";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = findViewById(R.id.et);
bt = findViewById(R.id.bt);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showNoti(et.getText().toString());
}
});
Intent intent = getIntent();
String name = intent.getStringExtra("name");
if(name!=null){
//name 값이 저장됐다면 EditText에 띄워줍니다.
et.setText(name);
}
}
public void showNoti(String name){
builder = null;
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//버전 오레오 이상일 경우
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
manager.createNotificationChannel(
new NotificationChannel(CHANNEL_ID, CHANEL_NAME, NotificationManager.IMPORTANCE_DEFAULT)
);
builder = new NotificationCompat.Builder(this,CHANNEL_ID);
//하위 버전일 경우
}else{
builder = new NotificationCompat.Builder(this);
}
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("name",name);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 101,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
//알림창 제목
builder.setContentTitle("알림");
//알림창 메시지
builder.setContentText("알림 메시지");
//알림창 아이콘
builder.setSmallIcon(R.drawable.icon);
//알림창 터치시 상단 알림상태창에서 알림이 자동으로 삭제되게 합니다.
builder.setAutoCancel(true);
//pendingIntent를 builder에 설정 해줍니다.
//알림창 터치시 인텐트가 전달할 수 있도록 해줍니다.
builder.setContentIntent(pendingIntent);
Notification notification = builder.build();
//알림창 실행
manager.notify(1,notification);
}
}
Intent를 사용해서 간단하게 String값을 전달해주는 예제를 만들어봤습니다.
알림메시지 기능을 이용해서 원하시는 어플을 완성하시기 바랍니다.
반응형
'안드로이드 > 코드' 카테고리의 다른 글
[안드로이드] 위험 권한 요청, 확인 하기 (0) | 2019.12.27 |
---|---|
[안드로이드] 페이지 슬라이딩 애니메이션 사용하기 - AnimationListener, Animation, Animation (0) | 2019.12.26 |
[안드로이드] 상단 알림창에 알림 띄우기1 - Notification (0) | 2019.12.20 |
[안드로이드] 핸들러, 커스텀 프로그레스바를 이용해서 타이머 만들기 - Handler, Custom ProgressBar, TextWatcher, InputMethodManager (0) | 2019.12.18 |
[안드로이드] 핸들러, 커스텀 프로그레스바 사용하기 - Handler, ProgressBar (0) | 2019.12.17 |