问题描述
随着Android 26(O)引入通知渠道,我一直在研究Google提供的com.example.android.notificationchannels
With Android 26 (O) introducing Notification channels I have been investigating the Google supplied com.example.android.notificationchannels
此示例按预期工作,直到我尝试向示例应用程序中定义的辅助通知中添加Action
为止.
This example works as expected until I attempted to add an Action
to the Secondary Notification defined within the example app.
我的代码类似于:-
/**
* Build notification for secondary channel.
*
* @param title Title for notification.
* @param body Message for notification.
* @return A Notification.Builder configured with the selected channel and details
*/
@RequiresApi(api = Build.VERSION_CODES.O)
public Notification.Builder getNotification2(String title, String body) {
return new Notification.Builder(getApplicationContext(), SECONDARY_CHANNEL)
.setContentTitle(title)
.setContentText(body)
.setActions(buildAction())
.setSmallIcon(getSmallIcon())
.setAutoCancel(true);
}
和buildAction():-
and buildAction() :-
@TargetApi(Build.VERSION_CODES.KITKAT_WATCH)
private Notification.Action buildAction() {
final Intent intent = new Intent(this, SecondActivity.class);
final PendingIntent pendingIntent = PendingIntent.getActivity(this, 1729, intent, PendingIntent.FLAG_UPDATE_CURRENT );
final Notification.Action myAction = new Notification.Action.Builder(R.drawable.ic_action_name, "RETRY", pendingIntent).build();
return myAction;
}
操作已显示并按预期工作,但是操作标题旁边未显示任何图标.
The Action is displayed and works as desired, however there is no Icon displayed next to the Action Title.
我做错了什么?
我的build.gradle文件如下所示:-
My build.gradle file is shown below:-
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha4'
}
}
apply plugin: 'com.android.application'
repositories {
jcenter()
}
dependencies {
compile "com.android.support:support-v4:26.+"
compile "com.android.support:support-v13:26.+"
compile "com.android.support:cardview-v7:26.+"
compile "com.android.support:appcompat-v7:26.+"
}
// The sample build uses multiple directories to
// keep boilerplate and common code separate from
// the main sample code.
List<String> dirs = [
'main', // main sample code; look here for the interesting stuff.
'common', // components that are reused by multiple samples
'template'] // boilerplate code that is generated by the sample template process
android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
// Values declared here override the ones declared in AndroidManifest.xml
defaultConfig {
minSdkVersion 16
targetSdkVersion 26
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
sourceSets {
main {
dirs.each { dir ->
java.srcDirs "src/${dir}/java"
res.srcDirs "src/${dir}/res"
}
}
androidTest.setRoot('tests')
androidTest.java.srcDirs = ['tests/src']
}
}
Android Studio的详细信息是:-
The Android Studio details are :-
Android Studio 3.0 Canary 4
Build #AI-171.4101728, built on June 15, 2017
JRE: 1.8.0_112-release-b736 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.11.6
推荐答案
自牛轧糖以来,通知动作不带有图标.
Notification actions do not present with icons since Nougat.
您会注意到新通知中没有这些图标;而是在通知阴影的受限空间中为标签本身提供了更多空间. 但是,通知操作图标仍然是必需的,并且继续在较旧版本的Android和Android Wear等设备上使用.
You’ll note that the icons are not present in the new notifications; instead more room is provided for the labels themselves in the constrained space of the notification shade. However, the notification action icons are still required and continue to be used on older versions of Android and on devices such as Android Wear.
来源: https://android-developers. googleblog.com/2016/06/notifications-in-android-n.html ,Ephasis我的.
Source: https://android-developers.googleblog.com/2016/06/notifications-in-android-n.html, ephasis mine.
总而言之,通知操作图标是必需的并且已使用:
To summarize, notification action icons are required and are used:
- 在旧版Android上
- 关于可穿戴设备,
- 在媒体样式通知中.
这篇关于Android 26(O)通知不显示操作图标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!