3

我正在尝试在 Eclipse 中运行 android 源代码。此应用程序的 targetSdkVerison 是 5 。我对 android 完全陌生,并安装了最新的 api(Android 4.1)。在代码的某些部分中,我遇到了错误,例如

    public void hideNotification(Service context)
    {
        context.setForeground(false);// error: The method setForeground(boolean) is undefined for the type Service
        getNotificationManager(context).cancel(NOTIF_PLAYING);
    }



    public void showNotification(Service context, long songId)
    {
        context.startForeground(NOTIF_PLAYING, newNotification(context, songId));//error :Call requires API level 5 (current min is 3): android.app.Service#startForeground
    }

我猜这些是因为不同版本的 sdk 之间不兼容。我该如何解决?

4

3 回答 3

2

首先,setForeground(...)已被弃用,不再可用。有关更多详细信息,请参阅此博客

您收到此错误是因为清单中定义的最低 SDK 级别为 3。startForeground(...)需要 API 5+。

现在,为了解决这个问题,你不能支持低于 API 5 的任何东西;根据Dashboards的数据,99.3% 的用户已经迁移到 API 5+。为此,请将您设置minSdkVersion5,并删除您对 的调用setForeground(...)。(这将解决两个错误消息。)

注意setForeground(...)已从SDK 中删除,并且永远不应再使用。

于 2012-08-06T04:44:20.760 回答
0

Service.setForeground(boolean)是自 API 级别 5 以来不存在的方法。它已替换为startForeground(int, Notification).

文档(来自链接)建议了一种方法,您可以使用该方法来支持旧设备,同时仍以 5 或更高版本的 API 为目标。

于 2012-08-06T04:44:04.503 回答
0

从 Android 2.0 开始,由于滥用 Android 1.5 中的应用程序,此方法已被弃用。查看以下博客,了解自那时以来发生了什么变化。

http://android-developers.blogspot.ca/2010/02/service-api-changes-starting-with.html

另请访问此页面以参考新方法(和一个小示例)。

http://developer.android.com/reference/android/app/Service.html#startForeground(int, android.app.Notification)

于 2012-08-06T04:44:26.110 回答