Merge pull request #3105 from NativeScript/connectivity

Fix: connectivity module always returns undefined on android <= 4.4
This commit is contained in:
Rossen Hristov
2016-11-17 09:14:43 +02:00
committed by GitHub

View File

@ -4,8 +4,8 @@ import utils = require("utils/utils");
global.moduleMerge(common, exports); global.moduleMerge(common, exports);
var WIFI = "WIFI"; let wifi = "wifi";
var MOBILE = "MOBILE"; let mobile = "mobile";
// Get Connection Type // Get Connection Type
function getConnectivityManager(): android.net.ConnectivityManager { function getConnectivityManager(): android.net.ConnectivityManager {
@ -13,7 +13,7 @@ function getConnectivityManager(): android.net.ConnectivityManager {
} }
function getActiveNetworkInfo(): android.net.NetworkInfo { function getActiveNetworkInfo(): android.net.NetworkInfo {
var connectivityManager = getConnectivityManager(); let connectivityManager = getConnectivityManager();
if (!connectivityManager) { if (!connectivityManager) {
return null; return null;
} }
@ -22,23 +22,26 @@ function getActiveNetworkInfo(): android.net.NetworkInfo {
} }
export function getConnectionType(): number { export function getConnectionType(): number {
var activeNetworkInfo = getActiveNetworkInfo(); let activeNetworkInfo = getActiveNetworkInfo();
if (!activeNetworkInfo || !activeNetworkInfo.isConnected()) { if (!activeNetworkInfo || !activeNetworkInfo.isConnected()) {
return common.connectionType.none; return common.connectionType.none;
} }
var connectionType = activeNetworkInfo.getTypeName(); let connectionType = activeNetworkInfo.getTypeName().toLowerCase();
switch (connectionType) { if (connectionType.indexOf(wifi) !== -1){
case WIFI: return common.connectionType.wifi;
return common.connectionType.wifi;
case MOBILE:
return common.connectionType.mobile;
} }
if (connectionType.indexOf(mobile) !== -1){
return common.connectionType.mobile;
}
return common.connectionType.none;
} }
export function startMonitoring(connectionTypeChangedCallback: (newConnectionType: number) => void): void { export function startMonitoring(connectionTypeChangedCallback: (newConnectionType: number) => void): void {
var onReceiveCallback = function onReceiveCallback(context: android.content.Context, intent: android.content.Intent) { let onReceiveCallback = function onReceiveCallback(context: android.content.Context, intent: android.content.Intent) {
var newConnectionType = getConnectionType(); let newConnectionType = getConnectionType();
connectionTypeChangedCallback(newConnectionType); connectionTypeChangedCallback(newConnectionType);
} }
appModule.android.registerBroadcastReceiver(android.net.ConnectivityManager.CONNECTIVITY_ACTION, onReceiveCallback); appModule.android.registerBroadcastReceiver(android.net.ConnectivityManager.CONNECTIVITY_ACTION, onReceiveCallback);