从广播接收器发送数据到 MainActivity

Send data from Broadcast receiver to MainActivity

我需要在屏幕上显示连接状态。这似乎是一项简单的任务...

下面是我的接收者代码:

public class PowerConnectionReceiver extends BroadcastReceiver {

public PowerConnectionReceiver() {
}

@Override
public void onReceive(Context context, Intent intent) {
    String state;
    if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) {
        state = "Charging";
        Toast.makeText(context, state, Toast.LENGTH_SHORT).show();

    } else {
        intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED);
        state = "Not charging";
        Toast.makeText(context, state, Toast.LENGTH_SHORT).show();
    }
}
}

如何在屏幕 textView 上显示我的 STATE 变量。有人可以帮忙吗?谢谢!

您需要注册一个Callback。在 PowerConnectionReceiver 中创建一个 Interface,例如:

public Interface NetworkStatusCallback {
    public void onStateChange(String state);
}

现在在您的 MainActivity 中实施此 Callback,例如:

public class MainActivity extends AppCompatActivity implements PowerConnectionReceiver.NetworkStatusCallback  {...}

PowerConnectionReceiver 中创建此 Callbackreference 并声明如下:

private NetworkStatusCallback mCallback;
mCallBack = (NetworkStatusCallback)context;

现在 onReceive(Context context, Intent intent) 执行此操作:

@Override
public void onReceive(Context context, Intent intent) {
    String state;
    if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) {
        state = "Charging";
        mCallback.onStateChange(state);
        Toast.makeText(context, state, Toast.LENGTH_SHORT).show();

    } else {
        intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED);
        state = "Not charging";
        mCallback.onStateChange(state);
        Toast.makeText(context, state, Toast.LENGTH_SHORT).show();
    }
}

您将在 MainActivity

收到状态