Серые кнопки при добавлении действий к уведомлениям в Jelly Bean

Я добавляю две кнопки к уведомлению в своем приложении, которое настроено на целевой уровень API 8. Проблема состоит в том, что две кнопки отображаются как две большие серые кнопки, совершенно неуместные с остальными уведомлениями. Я тестировал его как на Nexus 7, так и на Galaxy Nexus.

Введите описание изображения здесь

Все примеры, которые я видел, имеют красивые черные кнопки, такие как уведомление о входящем вызове: http://www.androidng.com/wp-content/uploads/2012/07/android-jelly-bean-notifications.jpeg

Я бы предположил, что это будет легко, но сегодня такой удачи нет. Кто-нибудь знает, где я мог ошибиться? Ниже приведен фрагмент моего кода, который генерирует уведомление с последней библиотекой поддержки.

NotificationManager nm = (NotificationManager) this .getSystemService(Context.NOTIFICATION_SERVICE); android.support.v4.app.NotificationCompat.Builder builder = new android.support.v4.app.NotificationCompat.Builder(this); builder.setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_stat_radio) .setContentTitle(message) .setTicker(message) .setPriority(android.support.v4.app.NotificationCompat.PRIORITY_HIGH) .setWhen(System.currentTimeMillis()) .setAutoCancel(false) .addAction(android.R.drawable.ic_btn_speak_now, "Play", contentIntent) .addAction(android.R.drawable.ic_dialog_map, "Stop", contentIntent) .setContentText(message); Notification n = builder.build(); //nm.notify(0, n); startForeground(1, n); 

Так что это происходит, потому что ваш targetSdk в вашем AndroidManifest.xml равен <11.

Я считаю, что изменение совместимости, которое происходит, когда вы нацеливаете 11, – это тема по умолчанию, потому что Holo. Поскольку ваша цель (и моя) меньше 11, она прибегает к какой-то теме совместимости, которую она применяет на этих кнопках, даже если она не должна. Я предполагаю, что даже если ваше приложение / активность установлено на Holo, оно фактически не применяется к уведомлению, поскольку они находятся в другом процессе.

Это только моя догадка. Использование демонстрации уведомлений CommonsWare и просто изменение targetSdk показывает это поведение.

Im с той же проблемой, используя Android studio (0.8.11) с Gradle (0.13.0)

 compileSdkVersion 20 buildToolsVersion "20.0" defaultConfig { applicationId "x.xx.xxxxxx" minSdkVersion 10 targetSdkVersion 20 versionCode x versionName "x.xx" } 

Решите его, добавив uses-sdk в Manifest

 <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="20" /> 

Я знаю, что значение Manifest будет переопределено значением Gradle . Но это решает.

Intereting Posts
Включение поддержки MultiDex в Android для достижения 65K + методов в Eclipse RemoveView не работает после LayoutInflater.inflate (ресурс, корень, истина) Ошибка отправки результата ResultInfo {who = null, request = 1, result = -1, data = Intent {(имеет дополнительные функции)}} для активности; java.lang.NullPointerException Запуск службы на платформе Android Как преобразовать из двоичного кода в десятичный в java (с помощью студии android) Поддержка разрешения в Android 2.0 Firebase Cloud Messaging заменила ключи сервера на токены для отправки уведомлений / сообщений Как не показывать приложение в списке последних приложений в ICS? ExcludeFromRecents не работает ViewPagers в ListView, показывающий элементы пустого списка Обнаружение лица Android MaxNumDetectedFaces Android split ActionBar – изменение раскладки значков Как избежать добавления метода инъекции для каждого представления? Android Project: как лучше всего организовать файлы Android – DDMS показывает сообщение: logcat read: Недопустимый аргумент Не удалось найти модуль с дорожкой Gradle. Вместо ссылки на библиотеку