如何在收到通知时更改textView值?

时间:2018-06-14 08:01:54

标签: android android-notifications

我尝试制作一个程序,当手机上出现通知时,会更改TextView的值。

在我的MainActivity中,我有一个方法:

changeText()

每当收到通知时,我都想从MainActivity致电public class NotificationListener extends NotificationListenerService { @Override public IBinder onBind(Intent intent) { return super.onBind(intent); } @Override public void onNotificationPosted(StatusBarNotification sbn) { //Change value of TextView } @Override public void onNotificationRemoved(StatusBarNotification sbn){ } } 。为此,我创建了一个名为NotificationListener的类,它扩展了NotificationListenerService。

changeText()

基本上,我想在onNotificationPosted(StatusBarNotification sbn) - 方法中调用LIMIT - 方法。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

我有一个解决方案,即使用EventBus

首先,创建一个事件

public class NotificationPosted {
// empty if you don't need to pass data
}

第二,在MainActivity

中注册此活动
@Override
    protected void onStart() {
        super.onStart();
        EventBus.getDefault().register(this);
    }


@Override
protected void onStop() {
    EventBus.getDefault().unregister(this);
    super.onStop();
}




  @Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
        public void onEvent(NotificationPosted notificationPosted) {
            changeText()
        }

最后,在NotificationListener

中发布您的活动
public void onNotificationPosted(StatusBarNotification sbn) {
    EventBus.getDefault().post(new NotificationPosted());
}

答案 1 :(得分:1)

您需要从非活动类到Activity类的回调。

public class MainActivity extends Activity implements INotificationCallback {  
    public void setText(String value) {
        TextView textNotificationView = (TextView) findViewById(R.id.textNotificationView);
        textNotificationView.setText(value);
    }  
}

public NotificationListener extends NotificationListenerService {
    public interface INotificationCallback {
        public void setText(String value);
    }   

    @Override
    public void onNotificationPosted(StatusBarNotification sbn) {
        activity.setText(value); 
    }  
}