Android 알림이 표시되지 않음
Android에서 알림을 추가 할 프로그램이 필요합니다. 그리고 누군가 알림을 클릭하면 두 번째 활동으로 연결됩니다.
코드를 설정했습니다. 알림이 작동해야하지만 어떤 이유로 작동하지 않습니다. 는 Notification
전혀 표시되지 않습니다. 내가 뭘 놓치고 있는지 모르겠다.
해당 파일의 코드 :
Notification n = new Notification.Builder(this)
.setContentTitle("New mail from " + "test@gmail.com")
.setContentText("Subject")
.setContentIntent(pIntent).setAutoCancel(true)
.setStyle(new Notification.BigTextStyle().bigText(longText))
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Hide the notification after it's selected
notificationManager.notify(0, n);
아이콘 없이는 코드가 작동하지 않습니다. 따라서 setSmallIcon
작동하려면 다음과 같이 빌더 체인에 호출을 추가하십시오 .
.setSmallIcon(R.drawable.icon)
Android Oreo (8.0) 이상
안드로이드 8은 설정의 새로운 요구 사항 소개 channelId
를 사용하여 속성을 NotificationChannel
.
private NotificationManager mNotificationManager;
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(mContext.getApplicationContext(), "notify_001");
Intent ii = new Intent(mContext.getApplicationContext(), RootActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, ii, 0);
NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
bigText.bigText(verseurl);
bigText.setBigContentTitle("Today's Bible Verse");
bigText.setSummaryText("Text in detail");
mBuilder.setContentIntent(pendingIntent);
mBuilder.setSmallIcon(R.mipmap.ic_launcher_round);
mBuilder.setContentTitle("Your Title");
mBuilder.setContentText("Your text");
mBuilder.setPriority(Notification.PRIORITY_MAX);
mBuilder.setStyle(bigText);
mNotificationManager =
(NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
// === Removed some obsoletes
if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.O)
{
String channelId = "Your_channel_id";
NotificationChannel channel = new NotificationChannel(
channelId,
"Channel human readable title",
Android.App.NotificationImportance.Default);
mNotificationManager.createNotificationChannel(channel);
mBuilder.setChannelId(channelId);
}
mNotificationManager.notify(0, mBuilder.build());
사실 ƒernando Valle의 대답은 정확 하지 않은 것 같습니다. 다시 말하지만, 귀하의 질문은 무엇이 잘못되었거나 작동하지 않는지 언급하지 않았기 때문에 지나치게 모호합니다.
Looking at your code I am assuming the Notification
simply isn't showing.
Your notification is not showing, because you didn't provide an icon. Even though the SDK documentation doesn't mention it being required, it is in fact very much so and your Notification
will not show without one.
addAction
is only available since 4.1. Prior to that you would use the PendingIntent
to launch an Activity
. You seem to specify a PendingIntent
, so your problem lies elsewhere. Logically, one must conclude it's the missing icon.
You were missing the small icon. I did the same mistake and the above step resolved it.
As per the official documentation: A Notification object must contain the following:
A small icon, set by setSmallIcon()
A title, set by setContentTitle()
Detail text, set by setContentText()
On Android 8.0 (API level 26) and higher, a valid notification channel ID, set by setChannelId() or provided in the NotificationCompat.Builder constructor when creating a channel.
See http://developer.android.com/guide/topics/ui/notifiers/notifications.html
This tripped me up today, but I realized it was because on Android 9.0 (Pie), Do Not Disturb by default also hides all notifications, rather than just silencing them like in Android 8.1 (Oreo) and before. This doesn't apply to notifications.
I like having DND on for my development device, so going into the DND settings and changing the setting to simply silence the notifications (but not hide them) fixed it for me.
Creation of notification channels are compulsory for Android versions after Android 8.1 (Oreo) for making notifications visible. If notifications are not visible in your app for Oreo+ Androids, you need to call the following function when your app starts -
private void createNotificationChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name,
importance);
channel.setDescription(description);
// Register the channel with the system; you can't change the importance
// or other notification behaviours after this
NotificationManager notificationManager =
getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
I think that you forget the
addAction(int icon, CharSequence title, PendingIntent intent)
Look here: Add Action
For me it was an issue with deviceToken
. Please check if the receiver and sender device token is properly updated in your database or wherever you are accessing it to send notifications.
For instance, use the following to update the device token on app launch. Therefore it will be always updated properly.
// Device token for push notifications
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(
new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
deviceToken = instanceIdResult.getToken();
// Insert device token into Firebase database
fbDbRefRoot.child("user_detail_profile").child(currentUserId).child("device_token")).setValue(deviceToken)
.addOnSuccessListener(
new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
}
});
}
});
I had the same issue with my Android app. I was trying out notifications and found that notifications were showing on my Android emulator which ran a Android 7.0 (Nougat) system, whereas it wasn't running on my phone which had Android 8.1 (Oreo).
After reading the documentation, I found that Android had a feature called notification channel, without which notifications won't show up on Oreo devices. Below is the link to official Android documentation on notification channels.
Not sure if this is still active, but you also need to change the build.gradle file, and add the used Android SDK version into it,
implementation 'com.android.support:appcompat-v7:28.0.0'
This worked like a charm in my case
If you are one version >= Android O while using Notification channel set its importance to high.
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
참고URL : https://stackoverflow.com/questions/16045722/android-notification-is-not-showing
'Programming' 카테고리의 다른 글
Docker-Machine 메모리를 늘리는 방법 Mac (0) | 2020.08.19 |
---|---|
scrollview에 중력이 없습니다. (0) | 2020.08.19 |
txt 파일의 각 줄을 새 배열 요소로 읽습니다. (0) | 2020.08.19 |
UIStackView 내부에 추가 된 뷰에 선행 패딩을 추가하는 방법 (0) | 2020.08.19 |
grunt : 터미널에서 실행할 때 명령을 찾을 수 없음 (0) | 2020.08.19 |