Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Oreo-如何自定义前台服务状态栏_Android_Notifications_Android 8.0 Oreo_Foreground Service - Fatal编程技术网

Android Oreo-如何自定义前台服务状态栏

Android Oreo-如何自定义前台服务状态栏,android,notifications,android-8.0-oreo,foreground-service,Android,Notifications,Android 8.0 Oreo,Foreground Service,我启动了一个前台服务,它显示在状态栏的android系统电池信息下 是否有办法自定义所显示的信息(标题、潜台词、图标等) 服务代码:已编辑代码 @Override public void onCreate() { context = this.getApplicationContext(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Intent notifi

我启动了一个前台服务,它显示在状态栏的android系统电池信息下

是否有办法自定义所显示的信息(标题、潜台词、图标等)

服务代码:已编辑代码

@Override
    public void onCreate() {
        context = this.getApplicationContext();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            Intent notificationIntent = new Intent(context, CallbackTestWidgetService.class);
            PendingIntent pendingIntent =
                    PendingIntent.getActivity(context, 10, notificationIntent, 0);

            Notification notification = new Notification.Builder(context, "Test")
                    .setContentTitle("Test")
                    .setContentText("text")
                    .setContentIntent(pendingIntent)
                    .setSmallIcon(R.drawable.test)
                    .setTicker("test")
                    .build();

CharSequence name = "test";
            String description = "test";
            int importance = NotificationManager.IMPORTANCE_DEFAULT;
            NotificationChannel channel = new NotificationChannel("10", name, importance);
            channel.setDescription("test");
            // Register the channel with the system; you can't change the importance
            // or other notification behaviors after this
            NotificationManager notificationManager = getSystemService(NotificationManager.class);
            notificationManager.createNotificationChannel(channel);

            startForeground(10, notification);
        }

    }

您正在生成传递到startForeground的通知。使用createContentView函数,就像要自定义的普通通知一样


请注意,这只适用于较新版本的Android,您可能希望使用支持库中的NotiicationCompat类来支持特定于版本的api差异,并在模拟器的几个不同api上进行测试。

您正在构建一个通知,以传递给startForeground。使用createContentView函数,就像要自定义的普通通知一样


请注意,这只适用于较新版本的Android,您可能希望使用支持库中的NotiicationCompat类来支持特定版本的api差异,并在几个不同的模拟器api上进行测试。

当应用程序未发布通知时,您看到的是默认通知

没有发布通知(尽管您调用了
startForeground
)的原因是您的目标是API 26或更高版本,并且没有将通知与应用程序关联。这将导致您的通知完全按照该页上的注释删除:

警告:如果您以Android 8.0(API级别26)为目标,并在未指定通知通道的情况下发布通知,则不会显示通知,系统会记录错误


您必须创建通知频道,然后在生成通知时包含通知频道的id。

当应用程序未发布通知时,您看到的是默认通知

没有发布通知(尽管您调用了
startForeground
)的原因是您的目标是API 26或更高版本,并且没有将通知与应用程序关联。这将导致您的通知完全按照该页上的注释删除:

警告:如果您以Android 8.0(API级别26)为目标,并在未指定通知通道的情况下发布通知,则不会显示通知,系统会记录错误

您必须创建通知通道,然后在生成通知时包含通知通道的id。

我无法通过调用
setContentTitle(CharSequence)
setContentText(CharSequence)
来更改通知内容标题和文本。 你知道为什么吗?

我无法通过调用
setContentTitle(CharSequence)
setContentText(CharSequence)
来更改通知内容标题和文本。
你知道为什么吗?

如果他们想完全定制通知,这是一个很有帮助的建议,但这并不是按照要求更改图标、标题和副标题所必需的,他们只需要首先正确构建通知。与我所做的有什么不同?createContentView不是一个通知生成器?如果他们想完全自定义通知,这是一个有用的建议,但这并不是只需要根据要求更改图标、标题和副标题,他们只需要首先正确构建通知。与我所做的有什么不同?createContentView不是一个通知生成器?我不理解google文档()说的“前台服务必须为状态栏提供通知,状态栏位于当前标题下。”并显示了一个使用标准模型的标准示例:notification notification=new notification.builder(这是频道默认的重要性)是的,那个文档已经过时了。所有的都是最新的。只要用您创建的通知调用
startForeground
。不是很清楚的文档(可能是我的英语):因此,我仍然使用上面显示的通知,我添加了频道并呼叫startforeground。我的应用程序工作正常,但该应用程序仍显示在android系统通知中。如果您仍然看到“测试正在使用电池”通知,则仍有一些内容需要更改。在您创建的位置使用更新的代码编辑您的问题我不理解google doc()说“前台服务必须为状态栏提供通知,状态栏位于当前标题下。”并显示了一个使用标准模型的标准示例:notification notification=new notification.Builder(这是频道默认的重要性)是的,那个文档已经过时了。所有的都是最新的。只要用您创建的通知调用
startForeground
。不是很清楚的文档(可能是我的英语):因此,我仍然使用上面显示的通知,我添加了频道并呼叫startforeground。我的应用程序工作正常,但该应用程序仍显示在android系统通知中。如果您仍然看到“测试正在使用电池”通知,则仍有一些内容需要更改。在您创建的位置使用更新的代码编辑您的问题您的通知通道,并在构建通知时使用它。您应该用代码发布一个问题。用不同的问题回答问题是不常见的:)您应该用代码发布一个问题。用不同的问题回答问题是不常见的:)