10

我将两个按钮添加到我的应用程序中设置为 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);
4

2 回答 2

11

之所以发生这种情况,是因为您的 AndroidManifest.xml 中的 targetSdk < 11。

我相信当你瞄准 11 时发生的兼容性变化是默认主题,因为 Holo。由于您(和我)的目标小于 11,因此它采用了一些适用于这些按钮的兼容性主题,即使它不应该这样做。我假设即使您的应用程序/活动设置为 Holo,它实际上并不适用于通知,因为它们处于不同的进程中。

这只是我的猜测。使用 CommonsWare 的通知演示并只需修改 targetSdk 即可显示此行为。

于 2012-08-27T22:37:46.873 回答
0

我有同样的问题,使用Android studio (0.8.11)withGradle (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。但这解决了它。

于 2014-09-24T14:03:28.477 回答