Search code examples
androidcordovaibm-mobilefirst

navigator.geolocation.getCurrentPosition throwing error on android for IBM MF - 7.1.0.00.20161006-0540


On IBM Mobilefirst fix pack version 7.1.0.00.20161006-0540

navigator.geolocation.getCurrentPosition(successfulcallback,errorCallback,{timeout:15000});

Calling above line of code on Android breaks the app causing it to crash with below error. But this is working on iOS.

10-13 16:00:30.477: W/System.err(12229): java.lang.ClassNotFoundException: org.apache.cordova.geolocation.GeoBroker 10-13 16:00:30.477: W/System.err(12229): at java.lang.Class.classForName(Native Method) 10-13 16:00:30.477: W/System.err(12229): at java.lang.Class.forName(Class.java:251) 10-13 16:00:30.477: W/System.err(12229): at java.lang.Class.forName(Class.java:216) 10-13 16:00:30.477: W/System.err(12229): at org.apache.cordova.PluginManager.instantiatePlugin(PluginManager.java:365) 10-13 16:00:30.477: W/System.err(12229): at org.apache.cordova.PluginManager.getPlugin(PluginManager.java:195) 10-13 16:00:30.477: W/System.err(12229): at org.apache.cordova.CordovaChromeClient.onGeolocationPermissionsShowPrompt(CordovaChromeClient.java:275) 10-13 16:00:30.477: W/System.err(12229): at com.android.webview.chromium.WebViewContentsClientAdapter.onGeolocationPermissionsShowPrompt(WebViewContentsClientAdapter.java:547) 10-13 16:00:30.477: W/System.err(12229): at com.android.org.chromium.android_webview.AwContents.onGeolocationPermissionsShowPrompt(AwContents.java:1842) 10-13 16:00:30.477: W/System.err(12229): at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method) 10-13 16:00:30.477: W/System.err(12229): at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:27) 10-13 16:00:30.477: W/System.err(12229): at android.os.Handler.dispatchMessage(Handler.java:102) 10-13 16:00:30.482: W/System.err(12229): at android.os.Looper.loop(Looper.java:157) 10-13 16:00:30.482: W/System.err(12229): at android.app.ActivityThread.main(ActivityThread.java:5335) 10-13 16:00:30.482: W/System.err(12229): at java.lang.reflect.Method.invokeNative(Native Method) 10-13 16:00:30.482: W/System.err(12229): at java.lang.reflect.Method.invoke(Method.java:515) 10-13 16:00:30.482: W/System.err(12229): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 10-13 16:00:30.482: W/System.err(12229): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 10-13 16:00:30.482: W/System.err(12229): at dalvik.system.NativeStart.main(Native Method) 10-13 16:00:30.482: W/System.err(12229): Caused by: java.lang.NoClassDefFoundError: org/apache/cordova/geolocation/GeoBroker 10-13 16:00:30.482: W/System.err(12229): ... 18 more 10-13 16:00:30.482: W/System.err(12229): Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.cordova.geolocation.GeoBroker" on path: DexPathList[[zip file "/data/app/com.metlifeapps.metlifeus-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.metlifeapps.metlifeus-1, /vendor/lib, /system/lib]] 10-13 16:00:30.482: W/System.err(12229): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67) 10-13 16:00:30.482: W/System.err(12229): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 10-13 16:00:30.482: W/System.err(12229): at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 10-13 16:00:30.487: W/System.err(12229): ... 18 more 10-13 16:00:30.487: I/System.out(12229): Error adding plugin org.apache.cordova.geolocation.GeoBroker. 10-13 16:00:30.487: W/System.err(12229): java.lang.NullPointerException 10-13 16:00:30.487: W/System.err(12229): at org.apache.cordova.PluginManager.getPlugin(PluginManager.java:197) 10-13 16:00:30.487: W/System.err(12229): at org.apache.cordova.CordovaChromeClient.onGeolocationPermissionsShowPrompt(CordovaChromeClient.java:275) 10-13 16:00:30.487: W/System.err(12229): at com.android.webview.chromium.WebViewContentsClientAdapter.onGeolocationPermissionsShowPrompt(WebViewContentsClientAdapter.java:547) 10-13 16:00:30.487: W/System.err(12229): at com.android.org.chromium.android_webview.AwContents.onGeolocationPermissionsShowPrompt(AwContents.java:1842) 10-13 16:00:30.487: W/System.err(12229): at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method) 10-13 16:00:30.487: W/System.err(12229): at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:27) 10-13 16:00:30.487: W/System.err(12229): at android.os.Handler.dispatchMessage(Handler.java:102) 10-13 16:00:30.487: W/System.err(12229): at android.os.Looper.loop(Looper.java:157) 10-13 16:00:30.487: W/System.err(12229): at android.app.ActivityThread.main(ActivityThread.java:5335) 10-13 16:00:30.487: W/System.err(12229): at java.lang.reflect.Method.invokeNative(Native Method) 10-13 16:00:30.487: W/System.err(12229): at java.lang.reflect.Method.invoke(Method.java:515) 10-13 16:00:30.487: W/System.err(12229): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 10-13 16:00:30.487: W/System.err(12229): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 10-13 16:00:30.487: W/System.err(12229): at dalvik.system.NativeStart.main(Native Method)


Solution

  • This is a known issue that affects both v7.0 and v7.1 of IBM MobileFirst Platform Foundation.
    PI70478 APP FAILED ON ANDROID DEVICES AFTER INSTALLED IFIX 7.1.0.00.20160919-1915

    Until it is fixed via an iFix, you can workaround this issue by removing the following from the generated config.xml in the Android project:

    <feature name="Geolocation">
        <param name="android-package" value="org.apache.cordova.geolocation.GeoBroker" />
    </feature>