I'm trying to run this code (in java)
so I wrote this code in b4a
and I get this exception int the first runMethod3 call
what am I doing wrong ?
What I'm trying to do is write a service that will not run if battery is lower than X% I tried using phoneEvents it did not work (seperate thread)
thanks
B4X:
Intent batteryIntent = context.getApplicationContext().registerReceiver(Null,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Int rawlevel = batteryIntent.getIntExtra("level", -1);
B4X:
Dim r1 As Reflector
Dim v As Object
v = r1.CreateObject2("android.content.IntentFilter",Array As Object("ACTION_BATTERY_CHANGED"),Array As String("java.lang.String"))
Log ("object created:" & v)
Dim r As Reflector
r.Target = r.GetContext
Dim rr As Object
rr = r.RunMethod3("registerReceiver",Null, "android.content.BroadcastReceiver",v,"android.content.IntentFilter")
'rr = r.RunMethod4("registerReceiver", Array As Object(0, v), Array As String("android.content.BroadcastReceiver", "android.content.IntentFilter"))
Log ("registerReceiver runned:" & rr)
r.Target = rr
Dim rawlevel As Int
rawlevel = r.RunMethod3("getIntExtra","level","java.lang.String",-1,"java.lang.int")
Log ("battery level is" & rawlevel)
B4X:
object created:android.content.IntentFilter@4057a1c8
main_getbatterylevel (java line: 404)
java.lang.IllegalArgumentException: argument type mismatch
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at anywheresoftware.b4a.agraham.reflection.Reflection.runmethod(Reflection.java:205)
at anywheresoftware.b4a.agraham.reflection.Reflection.RunMethod4(Reflection.java:846)
at appsright.testapp.main._getbatterylevel(main.java:404)
at appsright.testapp.main._activity_create(main.java:251)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:167)
at appsright.testapp.main.afterFirstLayout(main.java:89)
at appsright.testapp.main.access$100(main.java:16)
at appsright.testapp.main$WaitForLayout.run(main.java:74)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3806)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
java.lang.IllegalArgumentException: argument type mismatch
what am I doing wrong ?
What I'm trying to do is write a service that will not run if battery is lower than X% I tried using phoneEvents it did not work (seperate thread)
thanks