android - 如何监听我的应用程序和日历应用程序何时收到通知?

标签 android android-intent broadcastreceiver android-notifications

我希望能够在我的应用和日历应用收到通知时收听(BroadcastReceiver?),即使用户没有与之交互,即使屏幕关闭。

我还希望能够知道用户何时滑动通知。

我知道AccessibilityEvent可以启用做第一件事(监听通知)但不能做第二件事(Cannot listen for notification dismissal)。还有别的办法吗?

我该怎么做?我至少可以在我自己的通知发生时调用我的应用程序/监听器(它们用于日历事件)并且知道通知仍在通知托盘中吗?

最佳答案

您可以收听所有日历通知信息。你怎么说,你应该使用 AccessibilityService 并切换通知类型。然后你会得到包名称并比较它是否来自谷歌日历。

    public void onAccessibilityEvent(AccessibilityEvent event) {

    try {

        switch (event.getEventType()) {
        case AccessibilityEvent.TYPE_VIEW_CLICKED:

            Log.d(LOG_SERVICE, "Click");

            break;
        case AccessibilityEvent.TYPE_VIEW_FOCUSED:

            Log.d(LOG_SERVICE, "Focused");

            break;
        case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:

            Log.d(LOG_SERVICE, "Ihas been received a not" + type);

            String pack = (String) event.getPackageName();
                            if (pack.equalsIgnoreCase("com.google.android.calendar")) {
                   //The event information.
                    }
            break;

        default:
            type = "otro";
            Log.d(LOG_SERVICE, "otro");

            break;
        }

        AccessibilityNodeInfo notinfo = event.getSource();
        if (notinfo != null) {
            doSomethingWithNodeInfo(notinfo);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

如果 Android 设备带有 ICS 或更多。如果应用开发者设计了具有辅助功能的通知,您可以使用 AccessibilityNodeInfo。

关于android - 如何监听我的应用程序和日历应用程序何时收到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14950271/

相关文章:

java - Android BroadCast 接收器线程通知 sd 卡移除

Android 爱彼迎之类的 Tabs

android - 如何根据文件判断MIME类型是什么?

java - Android中输入新的子节点后如何删除最旧的子节点

android - java.lang.SecurityException - 不允许启动 Activity Intent { flg=0x4000000 cmp=[MY_ACTIVITY] (has extras) }

android - addProximityAlert 最初有效

javascript - 我认为 BroadcastReceiver 会自行重置,我需要它在不重置的情况下运行

android - 从共享 Intent 选择器中获取选定的应用程序名称?

android - Android 2.1中的ActivityInstrumentationTestCase2有问题吗?

android - App Inventor 与 Android SDK