在react本机中,是否有方法获取设备的网络状态?例如,我想知道当前设备是联机的还是脱机的。此外,我希望检测device何时联机或脱机,以便向用户显示一条消息,或者显示我需要运行的任何其他进程。
到目前为止,我只能向API发送一个请求,并将catch回调设置为fetch,如果没有连接,catch回调将运行,但我想知道是否有更好的方法解决这个问题。
我还想知道该设备是否使用wifi或lte连接。
有什么帮助吗?
发布于 2016-04-28 05:56:54
NetInfo API
看看反应本地NetInfo API。以下示例是从正式文档中复制的:
const ConnectionInfoCurrent = React.createClass({
getInitialState() {
return {
connectionInfo: null,
};
},
componentDidMount: function() {
NetInfo.addEventListener(
'change',
this._handleConnectionInfoChange
);
NetInfo.fetch().done(
(connectionInfo) => { this.setState({connectionInfo}); }
);
},
componentWillUnmount: function() {
NetInfo.removeEventListener(
'change',
this._handleConnectionInfoChange
);
},
_handleConnectionInfoChange: function(connectionInfo) {
this.setState({
connectionInfo,
});
},
render() {
return (
<View>
<Text>{this.state.connectionInfo}</Text>
</View>
);
}
});发布于 2016-04-27 18:08:45
您可以使用连接管理器访问网络状态。您可以使用相同的方法读取WIFI和移动数据。
public void checkInternet() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null) {
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
Log.d(TAG, "checkInternet: " + "Connected to WIFI");
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
Log.d(TAG, "checkInternet: " + "Connected to Mobile data");
}
} else {
Log.d(TAG, "checkInternet: " + "Not connected");
}
}还不要忘记将权限添加到清单中。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />希望能帮上忙!
https://stackoverflow.com/questions/36897283
复制相似问题