Skip to content

Commit a7bf86e

Browse files
committed
Request Notification permission in Android API 33+ on startup. (#35)
1 parent 28386bc commit a7bf86e

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ android {
2222
storePassword keystoreProperties['storePassword']
2323
}
2424
}
25-
compileSdk 31
25+
compileSdk 33
2626

2727
defaultConfig {
2828
applicationId "com.xtreak.notificationdictionary"
2929
minSdk 24
3030
targetSdk 33
31-
versionCode 19
32-
versionName "0.0.19"
31+
versionCode 20
32+
versionName "0.0.20"
3333

3434
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
3535
}

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
package="com.xtreak.notificationdictionary">
44

55
<uses-permission android:name="android.permission.INTERNET" />
6+
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
67

78
<application
89
android:allowBackup="true"

app/src/main/java/com/xtreak/notificationdictionary/MainActivity.kt

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
package com.xtreak.notificationdictionary
1212

13+
import android.Manifest
1314
import android.app.NotificationChannel
1415
import android.app.NotificationManager
1516
import android.app.ProgressDialog
@@ -24,8 +25,10 @@ import android.view.View
2425
import android.view.inputmethod.EditorInfo
2526
import android.widget.*
2627
import android.widget.TextView.OnEditorActionListener
28+
import androidx.activity.result.contract.ActivityResultContracts
2729
import androidx.appcompat.app.AlertDialog
2830
import androidx.appcompat.app.AppCompatActivity
31+
import androidx.core.app.ActivityCompat
2932
import androidx.core.view.MenuItemCompat
3033
import androidx.recyclerview.widget.LinearLayoutManager
3134
import androidx.recyclerview.widget.RecyclerView
@@ -46,6 +49,8 @@ class MainActivity : AppCompatActivity() {
4649

4750
private lateinit var progress_dialog: ProgressDialog
4851
private val CHANNEL_ID = "Dictionary"
52+
private val NOTIFICATION_REQUEST_CODE = 11
53+
4954

5055
override fun onCreate(savedInstanceState: Bundle?) {
5156
super.onCreate(savedInstanceState)
@@ -137,7 +142,11 @@ class MainActivity : AppCompatActivity() {
137142
done in my free time apart from my day job along with download costs for database files
138143
from CDN. If you find the app useful please leave a review in Play store and share the
139144
app with your friends. It will help and encourage me in maintaining the app and adding more features.
140-
Thanks."""
145+
146+
Please grant notification permission since the app requires notification permission in
147+
Android 13+ to show meanings through notification.
148+
Thanks for your support.
149+
"""
141150
)
142151
), this
143152
)
@@ -146,6 +155,10 @@ class MainActivity : AppCompatActivity() {
146155
initialize_spinner(database_name)
147156
// show_changelog()
148157
onNewIntent(intent)
158+
159+
// Request notification permission in Android 33+
160+
// https://developer.android.com/develop/ui/views/notifications/notification-permission
161+
requestNotificationPermission()
149162
}
150163

151164
private fun setIMEAction() {
@@ -485,6 +498,19 @@ class MainActivity : AppCompatActivity() {
485498
}
486499
}
487500

501+
private fun requestNotificationPermission() {
502+
val notificationManager: NotificationManager =
503+
getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
504+
505+
if (Build.VERSION.SDK_INT >= 33 && !notificationManager.areNotificationsEnabled()) {
506+
ActivityCompat.requestPermissions(
507+
this,
508+
arrayOf(Manifest.permission.POST_NOTIFICATIONS),
509+
NOTIFICATION_REQUEST_CODE
510+
)
511+
}
512+
}
513+
488514
fun sendMessage(view: View) {
489515
val wordEdit = findViewById<EditText>(R.id.wordInput)
490516

0 commit comments

Comments
 (0)