diff options
| author | Aayush Gupta <theimpulson@e.email> | 2022-04-12 03:40:40 +0000 | 
|---|---|---|
| committer | Aayush Gupta <theimpulson@e.email> | 2022-04-12 03:40:40 +0000 | 
| commit | 714db561375e369a9bc080447de6a7b5e619870b (patch) | |
| tree | 60e942f86caa6137ccf1b59a05a4f5c8e59a2242 /app/src/main/java/foundation/e/privacycentralapp/common | |
| parent | 58b435916b5fffea33600009d648ed7a5cc594ea (diff) | |
| parent | 4bd37041c3ace75e4ac5bfbd87fe6d1cfad8038a (diff) | |
| download | advanced-privacy-714db561375e369a9bc080447de6a7b5e619870b.tar.gz | |
Merge branch '5251-first-notification' into 'main'
privacycentralapp: Add notification on 1st boot to tell us more about our app
See merge request e/privacy-central/privacycentralapp!40
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/common')
| -rw-r--r-- | app/src/main/java/foundation/e/privacycentralapp/common/BootCompletedReceiver.kt | 73 | 
1 files changed, 73 insertions, 0 deletions
| diff --git a/app/src/main/java/foundation/e/privacycentralapp/common/BootCompletedReceiver.kt b/app/src/main/java/foundation/e/privacycentralapp/common/BootCompletedReceiver.kt new file mode 100644 index 0000000..a26c06a --- /dev/null +++ b/app/src/main/java/foundation/e/privacycentralapp/common/BootCompletedReceiver.kt @@ -0,0 +1,73 @@ +/*
 + * Copyright (C) 2022 E FOUNDATION
 + *
 + * This program is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation, either version 3 of the License, or
 + * (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 + */
 +
 +package foundation.e.privacycentralapp.common
 +
 +import android.app.NotificationChannel
 +import android.app.NotificationManager
 +import android.app.PendingIntent
 +import android.content.BroadcastReceiver
 +import android.content.Context
 +import android.content.Intent
 +import androidx.core.app.NotificationCompat
 +import foundation.e.privacycentralapp.R
 +import foundation.e.privacycentralapp.data.repositories.LocalStateRepository
 +
 +class BootCompletedReceiver : BroadcastReceiver() {
 +    companion object {
 +        const val FIRST_BOOT_NOTIFICATION_ID = 10
 +    }
 +
 +    override fun onReceive(context: Context, intent: Intent?) {
 +        if (intent?.action == Intent.ACTION_BOOT_COMPLETED) {
 +            val localStateRepository = LocalStateRepository(context)
 +            if (localStateRepository.firstBoot) {
 +                showNotification(context)
 +                localStateRepository.firstBoot = false
 +            }
 +        }
 +    }
 +
 +    private fun showNotification(context: Context) {
 +        val channelId = "first_boot_notification"
 +        val pendingIntent =
 +            PendingIntent.getActivity(
 +                context,
 +                0,
 +                context.packageManager.getLaunchIntentForPackage(context.packageName),
 +                PendingIntent.FLAG_IMMUTABLE
 +            )
 +        val notificationBuilder: NotificationCompat.Builder =
 +            NotificationCompat.Builder(context, channelId)
 +                .setSmallIcon(R.drawable.ic_notification_logo)
 +                .setContentTitle(context.getString(R.string.first_notification_title))
 +                .setAutoCancel(true)
 +                .setContentIntent(pendingIntent)
 +                .setStyle(
 +                    NotificationCompat.BigTextStyle()
 +                        .bigText(context.getString(R.string.first_notification_summary))
 +                )
 +        val notificationManager =
 +            context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
 +
 +        val name: CharSequence = "First Boot"
 +        val importance = NotificationManager.IMPORTANCE_HIGH
 +        val mChannel = NotificationChannel(channelId, name, importance)
 +        notificationManager.createNotificationChannel(mChannel)
 +        notificationManager.notify(FIRST_BOOT_NOTIFICATION_ID, notificationBuilder.build())
 +    }
 +}
 | 
