ui: add descriptions to notification channels (#395)

* ui: add descriptions to notification channels

Provide descriptions that will be displayed in the Android system notification settings to describe the purpose of each notification channel to the user.

* Use IMPORTANCE_HIGH for start_vpn_channel
pull/397/head
Andrea Gottardo 7 months ago committed by GitHub
parent c47ead9412
commit cbc0035dfe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -93,9 +93,15 @@ class App : UninitializedApp(), libtailscale.AppContext {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
createNotificationChannel( createNotificationChannel(
STATUS_CHANNEL_ID, "VPN Status", NotificationManagerCompat.IMPORTANCE_LOW) STATUS_CHANNEL_ID,
getString(R.string.vpn_status),
getString(R.string.optional_notifications_which_display_the_status_of_the_vpn_tunnel),
NotificationManagerCompat.IMPORTANCE_MIN)
createNotificationChannel( createNotificationChannel(
FILE_CHANNEL_ID, "File transfers", NotificationManagerCompat.IMPORTANCE_DEFAULT) FILE_CHANNEL_ID,
getString(R.string.taildrop_file_transfers),
getString(R.string.notifications_delivered_when_a_file_is_received_using_taildrop),
NotificationManagerCompat.IMPORTANCE_DEFAULT)
appInstance = this appInstance = this
setUnprotectedInstance(this) setUnprotectedInstance(this)
} }
@ -393,8 +399,9 @@ open class UninitializedApp : Application() {
startService(intent) startService(intent)
} }
fun createNotificationChannel(id: String?, name: String?, importance: Int) { fun createNotificationChannel(id: String, name: String, description: String, importance: Int) {
val channel = NotificationChannel(id, name, importance) val channel = NotificationChannel(id, name, importance)
channel.description = description
val nm: NotificationManagerCompat = NotificationManagerCompat.from(this) val nm: NotificationManagerCompat = NotificationManagerCompat.from(this)
nm.createNotificationChannel(channel) nm.createNotificationChannel(channel)
} }

@ -45,7 +45,7 @@ public final class StartVPNWorker extends Worker {
String channelId = "start_vpn_channel"; String channelId = "start_vpn_channel";
// Use createNotificationChannel method from App.java // Use createNotificationChannel method from App.java
app.createNotificationChannel(channelId, "Start VPN Channel", NotificationManager.IMPORTANCE_DEFAULT); app.createNotificationChannel(channelId, getApplicationContext().getString(R.string.vpn_start), getApplicationContext().getString(R.string.notifications_delivered_when_user_interaction_is_required_to_establish_the_vpn_tunnel), NotificationManager.IMPORTANCE_HIGH);
// Use prepareIntent if available. // Use prepareIntent if available.
Intent intent = app.getPackageManager().getLaunchIntentForPackage(app.getPackageName()); Intent intent = app.getPackageManager().getLaunchIntentForPackage(app.getPackageName());

@ -246,4 +246,12 @@
<!-- Strings for the IPNReceiver --> <!-- Strings for the IPNReceiver -->
<string name="title_connection_failed">Tailscale Connection Failed</string> <string name="title_connection_failed">Tailscale Connection Failed</string>
<string name="body_open_tailscale">Tap here to open Tailscale.</string> <string name="body_open_tailscale">Tap here to open Tailscale.</string>
<!-- Strings describing notification channels -->
<string name="taildrop_file_transfers">Taildrop file transfers</string>
<string name="vpn_status">VPN status</string>
<string name="vpn_start">VPN start</string>
<string name="notifications_delivered_when_user_interaction_is_required_to_establish_the_vpn_tunnel">Notifications delivered when user interaction is required to establish the VPN tunnel.</string>
<string name="optional_notifications_which_display_the_status_of_the_vpn_tunnel">Optional notifications which display the status of the VPN tunnel.</string>
<string name="notifications_delivered_when_a_file_is_received_using_taildrop">Notifications delivered when a file is received using Taildrop.</string>
</resources> </resources>

Loading…
Cancel
Save