通知无法在安卓电视上显示

4

我正在尝试在Android TV上使用通知功能。但我无法使通知显示在屏幕上。我使用的是搭载Android 6.0的Nexus player。

当我在手机上运行此代码时,通知会显示出来。但在电视上,通知不会显示。我是否漏掉了什么?

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    showNotification();
}

private void showNotification() {
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("My notification")
            .setContentText("Hello World!")
            .setCategory(Notification.CATEGORY_RECOMMENDATION)
            .setPriority(Notification.PRIORITY_HIGH) // heads up must be high priority
            .setAutoCancel(true)
            .setVibrate(new long[0]); // needed to guarantee heads up (need vibrate or ringtone)

    Notification notification = new NotificationCompat.BigPictureStyle(mBuilder).build();

    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    // mId allows you to update the notification later on.
    int mId = 0;
    mNotificationManager.notify(mId, notification);
}

编辑 我认为我的代码一直在工作。我将上述代码放在我的onCreate()中。因此,当我启动应用程序时,我希望能看到某种形式的通知弹出屏幕。然而,我发现当我按下“主页”按钮时,在主页旋转木马中会出现一个推荐。当我点击它时,它正确地跟随我的待处理意图。如果我删除.setCategory(Notification.CATEGORY_RECOMMENDATION)行,这将不会发生。所以这是Android TV“通知”的关键。

2个回答

1

电视通知与手机通知在某些方面有所不同,并可能具有特定的附加参数。尝试添加更多属性。以下是我在我的其中一个应用程序中实现的电视通知片段,已经起作用。

Notification notification = new NotificationCompat.BigPictureStyle(
            new NotificationCompat.Builder(mContext)
                    .setContentTitle(video.getString("title"))
                    .setContentText(mDescription)
                    .setPriority(mPriority)
                    .setLocalOnly(true)
                    .setOngoing(true)
                    .setColor(mContext.getResources().getColor(android.R.color.holo_green_dark))
                    .setCategory(Notification.CATEGORY_RECOMMENDATION)
                    .setLargeIcon(thumbnail)
                    .setSmallIcon(R.drawable.ic_note)
                    .setContentIntent(launchApp(mContext))
                    .setExtras(null))
            .build();


    return notification;

你知道吗,我觉得我的代码一直都在工作。我把代码放在了onCreate()里面。所以,当应用程序启动时,我期望看到屏幕上弹出某种通知。然而,我发现当我按下“主页”按钮时,在主页轮播中有一个推荐。当我点击它时,它正确地跟随了我的待处理意图。 - boltup_im_coding

1
由于Android TV的工作方式与Android智能手机略有不同,因此您需要实例化并设置TvExtender
但是,由于它带有@SystemApi注释,所以并不容易...

如果您是Google TV合作伙伴,则可以访问上述TV扩展类。 - Tarun Sharma
@TarunSharma 怎么做? - Ralf Wickum
我已经阅读了Medium博客 https://igorsteblii.medium.com/android-tv-application-notifications-on-o-c6820ada2086。 在android.mk文件中启用LOCAL_PRIVATE_PLATFORM_APIS:= true 或使用反射来访问 val innerClass = Class.forName("android.app.Notification$TvExtender") - Tarun Sharma
我已经关注了Medium博客https://igorsteblii.medium.com/android-tv-application-notifications-on-o-c6820ada2086。 在android.mk文件中启用LOCAL_PRIVATE_PLATFORM_APIS:= true 或使用反射来访问 val innerClass = Class.forName("android.app.Notification$TvExtender") - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接