React Native 中的 NetInfo 模块的 isConnectionExpensive() 方法
React Native 中的 NetInfo 模块的 isConnectionExpensive()
仅 Android 可用,用于判断当前活动的连接是否计费。
注意: 仅 Android 平台可用
那么,什么样的网络连接才会被判定为 计费 呢
- 通过移动数据网络
- 通过基于移动数据网络所创建的 wifi 热点
- 大量消耗电池
大量消耗电池 也会被判定为 计费,这就有点迷思了...
Android
要在 Android 上获取联网状态,还需要在
AndroidManifest.xml
中添加如下权限请求
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
语法
NetInfo.isConnectionExpensive() .then(isConnectionExpensive => { console.log('Connection is ' + (isConnectionExpensive ? 'Expensive' : 'Not Expensive')); }) .catch(error => { console.error(error); });
导入模块
import { NetInfo } from 'react-native'
或者
import NetInfo from "@react-native-community/netinfo";
方法说明
原型 | 返回值 | 平台 | 说明 |
---|---|---|---|
static isConnectionExpensive() | Promise | Android | 判断当前活动的连接是否计费 |
范例
下面的范例,使用 NetInfo
模块的 isConnectionExpensive()
方法判断当前活动的连接是否计费
注意: 仅 Android 平台可用
import React, {Component} from 'react'; import {Text,View, NetInfo} from 'react-native'; export default class App extends Component{ constructor(props) { super(props) this.state = { isConnectionExpensive: 'noexpensive' } var that = this; NetInfo.isConnectionExpensive() .then(isConnectionExpensive => { that.setState({isConnectionExpensive: isConnectionExpensive ? 'expensive' : 'noexpensive'}) }) .catch(error => { console.error(error); that.setState({isConnectionExpensive:'noexpensive'}) }); } render() { const {isConnectionExpensive} = this.state return ( <View> <Text>当前的网络状态是: {isConnectionExpensive == 'noexpensive' ? '免费网络' : '计费网络' } </Text> <Text>简单教程,简单编程 (https://www.twle.cn)</Text> </View> ); } }