通过接口回调生成通知



我在尝试使用已实现的接口构建通知时遇到问题。

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

这是错误

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

公共接口MQTT通讯器{void connect(字符串地址,int端口);//添加添加几个连接的能力

我能做些什么来解决这个问题?我尝试将is强制转换为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);
  }

这是在"活动"中,我在其中创建一个类的实例,该实例实现了我的基本接口类

我将这个对象命名为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);
  }

我使用getApplicationContext(); 解决了问题

NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(getApplicationContext()).setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle(topic).setContentText(message);

最新更新