Hello guys I’m using NotificationListenerService to get WhatsApp messages
But now I have a problem that I don’t know how to replay to WhatsApp notifications So here is the code and how I’m getting WhatsApp notifications but my problem is in how actually to replay on them
public class NotificationListener extends NotificationListenerService { // StaticFields: public static final String WHATSAPP_PACKAGE_NAME = "com.whatsapp"; // TAGS: private static final String TAG = "NotificationListener"; private static final String NP_FIELD = "onNotificationPosted: "; @Override public void onNotificationPosted(StatusBarNotification sbn) { super.onNotificationPosted(sbn); // Fields: ARPreferencesManager manager = new ARPreferencesManager(getApplicationContext()); String currentPackages = manager.getStringPreferences(ARPreferencesManager.PACKAGE_APP_NAME); List<Chat.Messages> messages = new ArrayList<>(); // CheckingStatusBarNotification: if (sbn.getPackageName().equals(WHATSAPP_PACKAGE_NAME)) { // Initializing(DateTime): String date = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(new Date()); List<Chat> chats; // Initializing(Data): String sender = sbn.getNotification().extras.getString(Notification.EXTRA_TITLE); String msg = sbn.getNotification().extras.getString(Notification.EXTRA_TEXT); String currentSenders = manager.getStringPreferences(ARPreferencesManager.SENDER_NAME); // AddingData: messages.add(new Chat.Messages(msg)); // Developing: if (manager.getPreferences().contains(ARPreferencesManager.WHATSAPP_CHATS)) { // Initializing: chats = ARUtils.fromJsonToChats(manager.getStringPreferences(ARPreferencesManager.WHATSAPP_CHATS)); // Developing: for (Chat chat : chats) { if (chat.getSender().equals(sender)) { // AddingTheNewMessage: chat.getMessages().addAll(messages); // AddingSender($Preferences): if (!currentSenders.contains(sender)) { // Initializing: manager.setStringPreferences(ARPreferencesManager.SENDER_NAME, sender + ","); // Refreshing: currentSenders = manager.getStringPreferences(ARPreferencesManager.SENDER_NAME); } } } // CheckingSenders: if (!currentSenders.contains(sender)) { // Initializing: Chat chat = new Chat(sender, "", date, null, messages); // AddingTheNewChat: chats.add(chat); } } else { // Initializing: chats = new ArrayList<>(); // Developing: chats.add(new Chat(sender, "", date, null, messages)); } // SettingPreferences: manager.setStringPreferences(ARPreferencesManager.WHATSAPP_CHATS, ARUtils.fromChatsToJson(chats)); // Debugging: ARUtils.debug(TAG, NP_FIELD, manager.getStringPreferences(ARPreferencesManager.WHATSAPP_CHATS)); } // Debugging: ARUtils.debug(TAG, NP_FIELD, "Whatsapp Package Was Founded In Preferences"); // Debugging: ARUtils.debug(TAG, NP_FIELD, "Start"); }
}
Advertisement
Answer
Did you try using this function?
fun reply(action: Notification.Action, message: String, exception: Exception.() -> Unit = {}) { try { val sendIntent = Intent() val msg = Bundle() for (inputable in action.remoteInputs) { msg.putCharSequence(inputable.resultKey, message) } RemoteInput.addResultsToIntent(action.remoteInputs, sendIntent, msg) action.actionIntent.send(applicationContext, 0, sendIntent) } catch (exception: Exception) { exception(exception) } }
You can get Notification.Action
for this way:
override fun onNotificationPosted(sbn: StatusBarNotification) { super.onNotificationPosted(sbn) val wExt = Notification.WearableExtender(sbn.notification) for (action in wExt.actions) { ...