Created
February 18, 2021 18:23
-
-
Save OmarYehiaDev/c0cd8d2e417c6d6f3cb102b9a0cded9d to your computer and use it in GitHub Desktop.
This is the native code for creating MethodChannel for Notifications in Flutter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.example.app | |
import androidx.annotation.NonNull | |
import io.flutter.embedding.android.FlutterActivity | |
import io.flutter.embedding.engine.FlutterEngine | |
import io.flutter.plugin.common.MethodChannel | |
import android.content.Context | |
import android.content.ContextWrapper | |
import android.content.Intent | |
import android.content.IntentFilter | |
import android.os.Build.VERSION | |
import android.os.Build.VERSION_CODES | |
import android.app.NotificationManager; | |
import android.app.NotificationChannel; | |
import android.net.Uri; | |
import android.media.AudioAttributes; | |
import android.content.ContentResolver; | |
class MainActivity: FlutterActivity() { | |
private val CHANNEL = "example.com/notifications_channel" //The channel name you set in your main.dart file | |
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { | |
super.configureFlutterEngine(flutterEngine) | |
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { | |
// Note: this method is invoked on the main thread. | |
call, result -> | |
if (call.method == "createNotificationChannel"){ | |
val argData = call.arguments as java.util.HashMap<String, String> | |
val completed = createNotificationChannel(argData) | |
if (completed == true){ | |
result.success(completed) | |
} | |
else{ | |
result.error("Error Code", "Error Message", null) | |
} | |
} else { | |
result.notImplemented() | |
} | |
} | |
} | |
private fun createNotificationChannel(mapData: HashMap<String,String>): Boolean { | |
val completed: Boolean | |
if (VERSION.SDK_INT >= VERSION_CODES.O) { | |
// Create the NotificationChannel | |
val id = mapData["id"] | |
val name = mapData["name"] | |
val descriptionText = mapData["description"] | |
val importance = NotificationManager.IMPORTANCE_HIGH | |
val mChannel = NotificationChannel(id, name, importance) | |
mChannel.description = descriptionText | |
// Register the channel with the system; you can't change the importance | |
// or other notification behaviors after this | |
val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager | |
notificationManager.createNotificationChannel(mChannel) | |
completed = true | |
} | |
else{ | |
completed = false | |
} | |
return completed | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment