2

如何使用 4.0 以上的辅助功能服务在 android 中获取通知?

为什么onAccessibilityEvent(AccessibilityEvent event)在 4.0 以上触发通知时不调用 请给出正确的建议

提前致谢

@Override
    public void onAccessibilityEvent(AccessibilityEvent event) {

        final int eventType = event.getEventType();
        System.out.println("MyServ.onAccessibilityEvent()");
        switch (eventType) {
        case AccessibilityEvent.TYPE_VIEW_FOCUSED:
            Toast.makeText(getApplicationContext(), "Notification fired",
                    Toast.LENGTH_LONG).show();
            break;
        case AccessibilityEvent.TYPE_ANNOUNCEMENT:
            Toast.makeText(getApplicationContext(), "Type is Announcement",
                    Toast.LENGTH_LONG).show();
            break;
        default:
            break;
        }

    }

onServiceConnected()

@Override
    protected void onServiceConnected() {
        super.onServiceConnected();
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
        info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
        setServiceInfo(info);
}
4

1 回答 1

1

试试这个代码:

    private void generateNotification(Context context, String message,
        long when, String query) {

    int icon = R.drawable.icon;
         long when = System.currentTimeMillis();
    String appname = context.getResources().getString(R.string.app_name);
    NotificationManager notificationManager = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    Notification notification;

    Intent intent = new Intent(context, MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
            intent, 0);

        if (currentapiVersion < android.os.Build.VERSION_CODES.HONEYCOMB) {
            notification = new Notification(icon, message, when);
            notification.setLatestEventInfo(context, appname, message,
                    contentIntent);
            notification.flags = Notification.FLAG_AUTO_CANCEL;
            notificationManager.notify((int) when, notification);

        } else {
            NotificationCompat.Builder builder = new NotificationCompat.Builder(
                    context);
            notification = builder.setContentIntent(contentIntent)
                    .setSmallIcon(icon).setTicker(appname).setWhen(when)
                    .setAutoCancel(true).setContentTitle(appname)
                    .setContentText(message).build();

            notificationManager.notify((int) when, notification);

        }

}

您可以调用generateNotification()方法onAccessibilityEvent()并显示通知。

于 2013-10-25T03:11:38.597 回答