Я проверяю подключение к Интернету в nativescript. Я написал следующий код:
startMonitoring(): void {
connectivity.startMonitoring((newConnectionType: number) => {
switch (newConnectionType) {
case connectivity.connectionType.none:
this.connectionType = "None";
console.log("Connection type changed to none.");
break;
case connectivity.connectionType.wifi:
this.connectionType = "Wi-Fi";
console.log("Connection type changed to WiFi.");
break;
case connectivity.connectionType.mobile:
this.connectionType = "Mobile";
console.log("Connection type changed to mobile.");
break;
default:
break;
}
});
}
и добавил разрешение на Android Manifest следующим образом:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Затем, когда я запускаю отладка tns для андроида, я все еще получаю сообщение об ошибке:
JS: ERROR Error: java.lang.SecurityException: ConnectivityService: Neither user 10224 nor current process has android.permission.ACCESS_NETWORK_STATE. JS:
android.os.Parcel.readException(Parcel.java:1954) JS:
android.os.Parcel.readException(Parcel.java:1900) JS:
android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:1216) JS:
android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:903) JS: com.tns.Runtime.callJSMethodNative(Native Method) JS:
com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1203) JS:
com.tns.Runtime.callJSMethodImpl(Runtime.java:1083) JS:
com.tns.Runtime.callJSMethod(Runtime.java:1070) JS:
com.tns.Runtime.callJSMethod(Runtime.java:1050) JS:
com.tns.Runtime.callJSMethod(Runtime.java:1042) JS:
com.tns.gen.android.content.BroadcastReceiver_vendor_119374_32_BroadcastReceiver.onReceive(BroadcastReceiver_vendor_119374_32_BroadcastReceiver.java:19) JS:
android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDisp...
Странно, что я все еще получаю сообщение об ошибке, хотя я уже добавил разрешение. Почему это происходит?
PS: Также пробовал тнс запустить андроид, но с той же ошибкой.
Спасибо!
как именно это сделать? Я попытался удалить приложение, а затем снова запустить tns run android. Это все еще не сработало
Попробуйте tns платформа чистая или просто удалите папку platforms
.
Кстати, почему это работает?
Попробуйте чистую сборку.
Запустите tns платформа чистая Или просто удалите папку platforms
, затем выполните tns [run | debug]
Всякий раз, когда вы меняете что-либо внутри App_Resources
или добавляете какие-либо плагины/нативные зависимости, нативный проект необходимо перекомпилировать. В противном случае отправляется только обновленный код JavaScript, и приложение обновляется. В большинстве случаев CLI определяет, когда вам нужна чистая сборка, и позаботится о себе, но иногда она может дать сбой, как в вашем случае, тогда вам нужно выполнить чистую сборку вручную, чтобы убедиться, что собственный проект обновлен с учетом последних изменений конфигурации.
Прохладный! Большое спасибо!
Пробовали чистую сборку?