为什么BroadcastReceiver在React Native中不起作用?

时间:2019-06-17 22:36:33

标签: android react-native broadcastreceiver react-native-android

我尝试开发一个将来可以运行服务的应用程序,即我连接到网络时要运行的服务。此刻,我只需要接收者打印已连接或已断开连接的日志(使用react-native log-android),或显示带有消息的吐司,所有这些都在后台而不是在前台。

尝试以下操作,首先将接收器放入AndroidManifest.xml

<application>
  ...
  <receiver android:name="com.air_fighers_react_native.receiver.NetworkChangeReceiver">
    <intent-filter>
      <action android:name="android.net.conn.CONECTIVITY_CHANGE"/>
    </intent-filter>
  </receiver>
</application>

甚至添加权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

在Java> com> air_fighters_react_native>接收器中并在NetworkChangeReceiver.java文件中使用以下代码创建接收器文件夹:

package com.air_fighters_react_native.receiver;

import android.content.BroadcastReceiver
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class NetworkChangeReceiver extends BroadcastReceiver {
  public void onReceive(Context context, Intent intent) {
    Toast.makeText(context, "Cambio de conexion.", Toast.LENGTH_LONG).show();
  }
}

据此应该足够,但是在运行应用程序时没有问题,但是当我关闭应用程序并激活和禁用wifi时,吐司消息不会显示,即使有应用程序也不会显示在前台。我已经尝试将接收者更改为:

<receiver android:name=".NetworkChangeReceiver">

然后将NetworChangeReceiver更改为与文件夹中MainApplication和MainActivity相同的级别。

0 个答案:

没有答案