突然之间Android Wearable不再显示通知了吗?

时间:2018-05-10 12:18:36

标签: android notifications android-service wear-os wearables

对于我的应用程序,我使用实现SensorEventListener的服务。该服务从可穿戴设备收集传感器数据。在这项服务中,我开始通知。上周,当我测试我的应用程序时,一切正常。但是突然我的可穿戴设备在我的服务处于前台时没有显示通知。即使旧版本的应用也不再显示通知。这非常令人困惑。所以,解决这个问题就是这样做的:

  1. 我测试过我的服务是否真的在前台:是的,确实如此。在 控制台我也可以看到手表真正在收集数据,所以 服务工作。
  2. 然后我查看了stackoverflow,发现可能是我的应用程序了 静音:我在手机,可穿戴设备和Google Wear App上搜索了它,但是 一无所获。所以我重新安装了手表,在我安装的地方再拿了一部手机 Google Wear应用。之后,我将可穿戴设备与手机配对。然后我部署了 我的应用程序在" new"电话和手表:没有通知可见。我也 更改了application-Id以查看是否有任何改变:no。
  3. 我目前的应用程序的旧版本,我100%肯定 通知确实出现了。我检查出来了:通知不是 再见了。
  4. 我不知道该怎么做。我的服务开始了,它确实在前台,看起来应用程序没有静音。

    我在我的服务的onCreate()中设置了通知:

     Notification.Builder builder = new Notification.Builder(this);
        builder.setContentTitle("TestApplication");
        builder.setContentText("Collecting sensor data..");
        builder.setSmallIcon(R.drawable.ic_launcher);
    
        startForeground(1, builder.build());
    

    在onCreate()中,我还检查我的服务是否在前台。我用来做这个的方法是这个(它从另一个stackoverflow代码复制粘贴,几乎没有变化):

    private boolean isServiceRunningInForeground(String serviceName){
        boolean serviceRunning = false;
        ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
        List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50);
        Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
        while (i.hasNext()) {
            ActivityManager.RunningServiceInfo runningServiceInfo = i
                    .next();
    
            if(runningServiceInfo.service.getClassName().equals(serviceName)){
    
                if(runningServiceInfo.foreground)
                {
                    return true;
                }
            }
        }
        return false;
    }
    

1 个答案:

答案 0 :(得分:0)

问题是我尝试使用SDK版本26时使用Notification.Builder创建通知。我不知道使用SDK 26我必须使用NotificationCompat.Builder和通知通道。

所以,对于遇到同样问题的每个人: - 将SDK更改为较低版本或 - 使用NotificationCompat.Builder(Context context,String notificationChannel)代替Notification.Builder