Skip to content

Instantly share code, notes, and snippets.

@kingjinho
kingjinho / activity_main.xml
Last active July 21, 2020 13:45
Notification 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">
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_display_basic_notification"
@kingjinho
kingjinho / NotificationBuilder.kt
Last active July 22, 2020 12:19
NotificationBuilder.kt
package com.example.pushnotificaiton.utils.push
/**
* Created by KING JINHO on 2020-06-23
*/
class NotificationBuilder {
companion object {
private lateinit var CHANNEL_ID: String
@kingjinho
kingjinho / MainActivity.kt
Created July 22, 2020 12:13
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
...
btn_display_basic_notification.setOnClickListener {
NotificationBuilder.from(this)
.createNotificationBuilder("HelloWorld")
.setTitle(R.string.app_name)
.setContent(R.string.app_name)
.setSmallIcon(R.drawable.ic_baseline_add_circle_24)
@kingjinho
kingjinho / NotificationBuilder.Compat.kt
Created July 22, 2020 12:31
NotificationBuilder.Compat.kt
public static class Builder {
...
...
CharSequence mContentTitle;
CharSequence mContentText;
PendingIntent mContentIntent;
PendingIntent mFullScreenIntent;
RemoteViews mTickerView;
Bitmap mLargeIcon;
@kingjinho
kingjinho / NotificationBuilder.kt
Created July 22, 2020 12:39
NotificationBuilder.kt setters
fun setSmallIcon(smallIconRes: Int): NotificationBuilder {
mNotificationBuilder.setSmallIcon(smallIconRes)
return this
}
fun setTitle(titleRes: Int): NotificationBuilder {
mNotificationBuilder.setContentTitle(CONTEXT.getString(titleRes))
return this
}
fun notifyUser(num : Int) {
mNotificationManagerCompat = NotificationManagerCompat.from(CONTEXT)
//id: unique in your app. otherwise, it will update to new one
mNotificationManagerCompat.notify(num, mNotificationBuilder.build())
}
@kingjinho
kingjinho / NotificationCompat.kt
Created July 23, 2020 12:43
NotifcationCompat.kt
/**
* Compatibility library for NotificationManager with fallbacks for older platforms.
*
* <p>To use this class, call the static function {@link #from} to get a
* {@link NotificationManagerCompat} object, and then call one of its
* methods to post or cancel notifications.
*/
public final class NotificationManagerCompat {
private static final String TAG = "NotifManCompat";
private static final String CHECK_OP_NO_THROW = "checkOpNoThrow";
private NotificationManagerCompat(Context context) {
 mContext = context;
 mNotificationManager = (NotificationManager) mContext.getSystemService(
 Context.NOTIFICATION_SERVICE);
}
fun setLargeIcon(largeIconRes: Int): NotificationBuilder {
val bitmap = BitmapFactory.decodeResource(CONTEXT.resources, largeIconRes)
mNotificationBuilder.setLargeIcon(bitmap)
return this
}
fun setBlockOfText(blockOfText: String): NotificationBuilder {
mNotificationBuilder.setStyle(
NotificationCompat.BigTextStyle()
//.setBigContentTitle("this is big content title") overrides setContentTitle()
//.setSummaryText("this is summary text") right next to app name
.bigText(blockOfText)
)
return this
}