有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在安卓 studio中从java代码重播WhatsApp通知

大家好,我正在使用NotificationListenerService获取WhatsApp消息

但现在我遇到了一个问题,我不知道如何重播WhatsApp通知 下面是代码以及我是如何获得WhatsApp通知的,但我的问题是如何在这些通知上重播

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");
}

}


共 (1) 个答案

  1. # 1 楼答案

    你试过使用这个功能吗

    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)
        }
    }
    

    您可以通过以下方式获得Notification.Action

    override fun onNotificationPosted(sbn: StatusBarNotification) {
        super.onNotificationPosted(sbn)
        val wExt = Notification.WearableExtender(sbn.notification)
        for (action in wExt.actions) {
            ...