編輯:關於Android編程
使用React Native,可以使用NetInfo API獲取手機當前的各個網絡狀態。
componentWillMount() { NetInfo.fetch().done((status)=> { console.log('Status:'+status); }); }
獲取網絡狀態是異步的,上面使用了Promise機制。
請求網絡信息需要先在應用的AndroidManifest.xml文件中添加如下權限字段,申請相關權限:
修改完成後,reaload代碼是無效的,因為我們修改了Android原生的配置文件,需要重新執行react-native run-android命令。這個命令重新編譯對應的Android項目安裝包並安裝到手機中。
Android可獲取的狀態比較多,上面的status可能有如下的值,直接把文檔貼出來了:
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxoMSBpZD0="ios端網絡狀態">
+ NONE - 設備處於離線狀態
+ BLUETOOTH - 藍牙數據連接
+ DUMMY - 模擬數據連接
+ ETHERNET - 以太網數據連接
+ MOBILE - 移動網絡數據連接
+ MOBILE_DUN - 撥號移動網絡數據連接
+ MOBILE_HIPRI - 高優先級移動網絡數據連接
+ MOBILE_MMS - 彩信移動網絡數據連接
+ MOBILE_SUPL - 安全用戶面定位(SUPL)數據連接
+ VPN - 虛擬網絡連接。需要Android5.0以上
+ WIFI - WIFI數據連接
+ WIMAX - WiMAX數據連接
+ UNKNOWN - 未知數據連接IOS端網絡狀態
none - 設備處於離線狀態。 wifi - 設備處於聯網狀態且通過wifi鏈接,或者是一個iOS的模擬器。 cell - 設備是通過Edge、3G、WiMax或是LTE網絡聯網的。 unknown - 發生錯誤,網絡狀況不可知
監聽網絡改變事件
在獲取了網絡狀態後,開發者還可以通過NetInfo API提供的監聽器,監聽網絡狀態改變事件。這樣當手機網絡狀態改變時,React Native應用馬上收到通知。
componentWillMount() {
NetInfo.fetch().done((status)=> {
console.log('Status:' + status);
});
//監聽網絡狀態改變
NetInfo.addEventListener('change', this.handleConnectivityChange);
}
componentWillUnMount() {
console.log("componentWillUnMount");
NetInfo.removeEventListener('change', this.handleConnectivityChange);
}
handleConnectivityChange(status) {
console.log('status change:' + status);
//監聽第一次改變後, 可以取消監聽.或者在componentUnmount中取消監聽
// NetInfo.removeEventListener('change', this.handleConnectivityChange);
}
判斷是否有網絡連接
NetInfo API 為開發者提供了isConnected函數用來判斷當前手機是否有網絡連接。
NetInfo.isConnected.fetch().done((isConnected) => {
console.log('First, is ' + (isConnected ? 'online' : 'offline'));
});
isConnectionExpensive(僅Android端)
NetInfo API為開發者提供了 isConnectionExpensive函數用來判斷當前網絡連接是否付費的。如果當前連接是通過移動數據網絡,或者通過基於移動數據網絡所創建的wifi熱點,都有可能被判定為計費的數據連接。目前這個函數只為Android平台提供。
NetInfo.isConnectionExpensive((isConnectionExpensive) => {
console.log('Connection is ' + (isConnectionExpensive ? 'Expensive' : 'Not Expensive'));
});
最近在進行android開發過程中,在將 Intent傳遞給調用的組件並完成組件的調用時遇到點困難,並且之前對Intent的學習也是一知半解,最近特意為此拿出一些時間,對
簡介JNI:Java Native Interface(Java 本地接口),它是為了方便Java調用C、C++等本地代碼所封裝的一層接口。NDK:Native Deve
有很多人喜歡在手機上下東西,但是有手機在休眠的時候WIFI會斷網,這樣想下載的東西也下載不了了,那麼怎麼避免這種情況出現呢,下面小編就給大家介紹下防止手機休
前言距離寫上一篇自定義View文章已經大半年過去了,一直想繼續寫,但是無奈技術有限,生怕誤人子弟。這段時間項目剛剛完成,有點時間,跟著大神的腳步,鞏固下自定義View的相