Good idea!
Here is the code:
Private Sub PreferWifiRouting As ResumableSub
'Dim p As Phone
'If p.SdkVersion >= 22 Then
If Starter.wifi.APIversion >= 22 Then
Dim ctxt As JavaObject
' MW 29.03.2019
Log("PreferWifiRouting Start")
ctxt.InitializeContext
Dim builder As JavaObject
builder.InitializeNewInstance("android.net.NetworkRequest.Builder", Null)
Dim manager As JavaObject = ctxt.RunMethod("getSystemService", Array("connectivity"))
builder.RunMethod("addTransportType", Array(1)) 'NetworkCapabilities.TRANSPORT_WIFI
Dim event As JavaObject
event.InitializeNewInstance(Application.PackageName & ".wificonnect$NetworkCallback", Null)
manager.RunMethod("requestNetwork", Array(builder.RunMethod("build", Null), event))
Wait For network_available (Network As Object)
' MW 29.03.2019
Log("PreferWifiRouting Network found.")
Dim cm As JavaObject
' Up to API 22
'' Return cm.InitializeStatic("android.net.ConnectivityManager").RunMethod("setProcessDefaultNetwork", Array(Network))
' static boolean setProcessDefaultNetwork(Network Network)
' This method was deprecated in API level 23.
' This function can throw IllegalStateException.
' Use bindProcessToNetwork(Network) instead. bindProcessToNetwork Is a direct replacement.
Return cm.InitializeStatic("android.net.ConnectivityManager").RunMethod("bindProcessToNetwork", Array(Network))
End If
Return False
End Sub
#if Java
public static class NetworkCallback extends android.net.ConnectivityManager.NetworkCallback {
public void onAvailable(android.net.Network network) {
processBA.raiseEventFromUI(null, "network_available", network);
}
}
#End If
Here is the error log:
...
Wartezeit [mSek] für Disconnect Versuche: 10
StartConnectToAP: MyBike14313210 ist ein auf dem Handy gespeicherter Access Point!
PreferWifiRouting Start
*** Service (receiver) Create ***
BroadcastReceiver has been initialized.
** Service (receiver) Start **
TimerCheckTimeOutForConnection_Tick!Zeit: 03/30/2019 12:46:23
TimerCheckTimeOutForConnection_Tick!Zeit: 03/30/2019 12:46:24
TimerCheckTimeOutForConnection_Tick!Zeit: 03/30/2019 12:46:25
TimerCheckTimeOutForConnection_Tick!Zeit: 03/30/2019 12:46:26
PreferWifiRouting Network found.
Error occurred on line: 372 (WifiConnect)
java.lang.IllegalArgumentException: Expected receiver of type android.net.ConnectivityManager, but got java.lang.Class<android.net.ConnectivityManager>
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4j.object.JavaObject.RunMethod(JavaObject.java:131)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:176)
at anywheresoftware.b4a.shell.DebugResumableSub$RemoteResumableSub.resume(DebugResumableSub.java:22)
at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:250)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:137)
at anywheresoftware.b4a.BA$1.run(BA.java:335)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
line 372 is: Return cm.InitializeStatic("android.net.ConnectivityManager").RunMethod("bindProcessToNetwork", Array(Network))
Is someone able to help me?
Thank's a lot and regards
Michael