MediaStyle通知更新

时间:2014-11-01 14:35:58

标签: android android-notifications android-5.0-lollipop

我正在更改现有应用程序以使用MediaStyle通知在Android 5.0中提供锁屏音乐信息和传输控件。但是,似乎更新此类通知并未按预期工作。每次按下按钮时,以下代码段都会生成通知,从而递增通知标题中显示的计数器:

public class MainActivity extends Activity {    
    private int serial;
    private TextView text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView)findViewById(R.id.textView1);
    }

    public void buttonClick(final View view) {
        final Notification.Builder builder = new Notification.Builder(this)
            .setContentTitle("Title " + serial)
            .setContentText("Text")
            .setContentInfo("Info")
            .setSmallIcon(R.drawable.ic_launcher)
            .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher))
            .setOngoing(true)
            .setStyle(new Notification.MediaStyle())
            .setVisibility(Notification.VISIBILITY_PUBLIC);

            NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE );
            nm.notify(1, builder.build());

            text.setText("Serial = " + serial);

            serial++;
    }
}

问题是:

  • 在运行5.0的模拟器中执行时,通知抽屉或锁定屏幕中的通知文本与TextView中显示的序列不同步。如果MediaStyle 设置,则通知抽屉中的通知编号正确,但锁定屏幕中没有。
  • MediaStyle通知在锁定屏幕中正确显示,直到第一次在通知抽屉中查看。之后,它不再在锁定屏幕中显示为MediaStyle通知(但不完全像标准的非MediaStyle通知)。值得注意的是,在重新启动模拟器之前,不再显示添加了addAction()的按钮。

所以我怀疑我做错了什么(或者说,或者模拟器上运行的Android图像被破坏了,但这似乎不太可能)。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

事实证明,模拟器毕竟已经破了。在真实设备(运行5.0的Nexus 5)中,通知行为(包括更新添加了addAction()的图标,标题和信息更新以及在抽屉中看到的锁定屏幕中的通知)是正确的。然而,在撰写本答案时,问题仍然发生在随API 21 SDK提供的模拟器中,并且没有可用的更新。