【问题标题】:Android notifications: compatibility with APIsAndroid 通知:与 API 的兼容性
【发布时间】:2012-10-16 11:53:40
【问题描述】:

我正在尝试在我的应用中显示通知以及其中的进度条。

我的应用规范是我的目标是 API 15,最小 SDK 设置为 8。我使用以下代码来显示通知:

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);

mBuilder.setContentTitle("My Application")
        .setContentText("Downloading...")
        .setProgress(0, 0, true)
        .setSmallIcon(R.drawable.ic_launcher);

PendingIntent in = PendingIntent.getActivity(getApplicationContext(), 0, getIntent(), 0);
mBuilder.setContentIntent(in);

mNotificationManager.notify(0, mBuilder.build());

使用上面的代码,通知出现在通知抽屉中,但没有进度条(在 Android 2.2 和 2.3.3 上)。但进度条在 Android 4.1 上看起来不错。所以很明显这是一个兼容性问题。

我如何编写代码,让我的通知带有无限的进度条出现在我定位的 API 上。我尝试使用Notification.Builder,但这个类在我当前的规格中不可用。

提前致谢!

-法拉兹·阿扎尔

【问题讨论】:

    标签: android notifications android-4.2-jelly-bean android-2.3-gingerbread


    【解决方案1】:

    【讨论】:

    • 是的,我确实有。我试图避免自定义通知布局,并希望有一种方法可以使默认通知类在整个 API 中工作。我想如果这是唯一的方法,那么我别无选择,只能去。
    • 我猜你别无选择。您仍然可以在创建通知之前检查操作系统版本,并尽可能使用系统 API
    • 嗯。谢谢。我猜是 RemoteViews。
    【解决方案2】:

    我鼓励您使用Notification Compat 2。它是为处理此类问题而创建的。
    如果您想为通知使用自定义 RemoteView,请查看 at my fork。我已经提出了拉取请求,但尚未集成。

    【讨论】:

    • 看起来不错,但我避免使用第三方库,只是因为它们的许可要求。我真的不想使用自定义布局,我想我会坚持使用默认的 android 图形和布局。
    • 像这样的库或 ActionBarSherlock 的目标是帮助开发人员。 99% 的时间他们都拥有非常方便的许可证。默认布局确实很可能是您想要用于通知的布局。大多数时候,恐怖都是用 remoteViews 创建的。
    • 我刚刚尝试了 remoteviews,我注意到的直接恐怖是我在其中使用的 textview 不能同时在姜饼和果冻豆上正确显示。我的默认应用程序主题是android:Theme.Light。它产生的问题是姜饼的文本前景色似乎融入了通知抽屉背景,而它在 jellybean 上看起来很好。我是怎么解决的。再次硬编码?
    • 其实我只是想到了一个问题:通知中的进度条是什么时候出现的?我可能错了,但我认为它们直到 Honeycomb (3.0) 才出现。如果是这种情况,如果您绝对想在通知中显示进度条,那么 remoteViews 将是您唯一的选择。但如果它不是 android 2.x 的一部分,对话框就可以了。
    • 通知中一直有进度条。最简单的例子是,当您从市场下载应用程序时,您会看到显示下载进度的进度条。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    相关资源
    最近更新 更多