Nofication,比如“未接来电”通知在手机切换语言时不会自动更新显示的文字,除非重启或者重新来一个未接来电。问下各位的手机是都有这个问题吗

解决方案 »

  1.   

     没说明白么 是这样。如果你有一个未接来电,notification会有一个通知,即把notification下拉了以后,会显示一个“未接来电”。 这个时候,你把手机的语言改为英语,此时notification应该显示“missed call”,但实际上notification依然显示的还是“未接来电”
      

  2.   

    应该不是平台bug,只是这个程序没有添加多语言支持,如果他没有添加英语词条,你怎么换都没用。
      

  3.   

    可是重启后或者重新再来一个未接来电后,未接来电就会变成“missed call",说明还是有英语词条的。这个问题可以在模拟器上复现。
    而且关键的是,当切换语言时,notification上的一些英语比如“Ongoing”,“notification”和按钮“clear”可以正确的切换,但是“missed call”之类的就不能被正常切换。
    大家可以在模拟器上试下
      

  4.   

    应该就是这样的吧,通知的时候是一个后台的Service在跑,他会读取当前语言设置,但是当你更改语言以后,他没有去重新执行通知啊,但是再有新的通知的话是会使用新的语言设置的,不知道这么说你有没有明白
      

  5.   

    是的,是android原生态的缺陷。因为通知的string是原先打包好发出的。但是可以做语言设置触发更新,不然需要重启后才可以。
      

  6.   

    原因是notification中显示的都是app发过来的remoteview。而remoteview中的显示内容由app决定的。StatusBarServices不会管。所以要想改变语言,需要app的重发
      

  7.   

    目前android哪个版本修复了这个问题?
      

  8.   

    不能切换语言的通知需要到发送该通知的app里面处理,所以处理起来比较麻烦。如果是正在通话的通知以及未接来电的通知,则需要到PhoneApp.java中对Intent.ACTION_LOCALE_CHANGED进行监听,监听到了之后调用NotificationMgr.java中的方法比如updateInCallNotification(),来实现更新通知的功能。但是问题是在NotificationMgr.java中并没有完备的更新通知操作,并没有用来更新未接来电通知的方法,所以需要自己实现。