通过接口回调构建通知

时间:2015-02-27 15:32:08

标签: java android notifications

我遇到了一个问题,试图使用我实现的接口来构建通知。

接口实现了一个有4个方法的处理程序,我遇到的方法是onNotificationReceived()

这是错误

The constructor NotificationCompat.Builder(new MQTTCommunicator.MQTTEventHandler(){}) is undefined

public interface MQTTCommunicator {   void connect(String address,int port); //添加添加多个连接的能力

我该怎么做才能解决这个问题?我试图将转换为MQTTEventHandler,但没有运气。我设置这种方式是因为所有代码都是在库中实现的,我想避免对任何类/引用进行硬编码应用项目。

接口基类

  void disconnect();

  void subscribe(String topic);

  void unsubscribe(String topic);

  void sendMessage(String topic, String message);

  void addEventHandler(MQTTEventHandler handler);

  void removeEventHandler(MQTTEventHandler handler);

  CommunicatorStatus getStatus();


  public interface MQTTEventHandler {
    void onStatusChanged(CommunicatorStatus status, String message);

    void onMessageReceived(String topic, String message);

    void onException(String message);

    void onNotificationReceived(String message);
  }

这是在Activity中,我创建了一个实现我的基接口类的类的实例。

我将此对象命名为mComm,我可以向其注册MQTTEventHandler。

 private void establishRecievers() {
    MQTTEventHandler mHandler = new MQTTEventHandler() {
      @Override
      public void onStatusChanged(CommunicatorStatus status, String message) {
        // TODO Auto-generated method stub
        // Do something with status
      }

      @Override
      public void onMessageReceived(String topic, String message) {
        // TODO Auto-generated method stub
        // Do something with the message
        adapter.add(topic + "|||" + message);
        adapter.notifyDataSetChanged();

      }

      @Override
      public void onException(String message) {
        // TODO Auto-generated method stub
        // Do something with exception
      }

      public void onNotificationReceived(String message) {
        // TODO Auto-generated method stub
        // Do something with exception
        Log.e("NOTIFICATION", message);

     //ISSUE IS HERE

        NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!");

      }
    };
    mComm.addEventHandler(mHandler);
  }

1 个答案:

答案 0 :(得分:0)

我使用getApplicationContext();

解决了这个问题
NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(getApplicationContext()).setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle(topic).setContentText(message);