PostgreSQL JDBC connection fails on Android 4.0

2019-06-24 03:34发布

问题:

Does anyone knows what can I do to make JDBC connection work on Android 4.0. It works fine on Android 1.6-2.3. I use Dave Cramer's build: http://groups.google.com/group/pgandroid/browse_thread/thread/d8b400f039f66d5f/f77b2e2a99370a36?lnk=raot#f77b2e2a99370a36

The Logcat says:

06-10 17:35:51.043: E/AndroidRuntime(798): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.belonogov.connectjdbc/com.belonogov.connectjdbc.ConnectJDBCActivity}: java.lang.NullPointerException
06-10 17:35:51.043: E/AndroidRuntime(798):  
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at android.app.ActivityThread.access$600(ActivityThread.java:123)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at android.os.Handler.dispatchMessage(Handler.java:99)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at android.os.Looper.loop(Looper.java:137)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at android.app.ActivityThread.main(ActivityThread.java:4424)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at java.lang.reflect.Method.invokeNative(Native Method)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at java.lang.reflect.Method.invoke(Method.java:511)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at dalvik.system.NativeStart.main(Native Method)
06-10 17:35:51.043: E/AndroidRuntime(798): Caused by: java.lang.NullPointerException
06-10 17:35:51.043: E/AndroidRuntime(798):  
at com.belonogov.connectjdbc.ConnectJDBCActivity$CustomDrawableView.<init>(ConnectJDBCActivity.java:81)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at com.belonogov.connectjdbc.ConnectJDBCActivity.onCreate(ConnectJDBCActivity.java:27)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at android.app.Activity.performCreate(Activity.java:4465)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
06-10 17:35:51.043: E/AndroidRuntime(798):  
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
06-10 17:35:51.043: E/AndroidRuntime(798):  
... 11 more

It's just a simple application that connects to a database.

回答1:

If at all possible, consider moving away from direct JDBC on your android device. It's inefficient in terms of round trips, etc, and isn't robust in the face of unreliable connections.

See How can I securely (indirectly) query a postgresql database within android? .



回答2:

Most likely you will find the answer here:

06-10 17:35:51.043: E/AndroidRuntime(798): Caused by: java.lang.NullPointerException
06-10 17:35:51.043: E/AndroidRuntime(798):      at com.belonogov.connectjdbc.ConnectJDBCActivity$CustomDrawableView.<init>(ConnectJDBCActivity.java:81)
06-10 17:35:51.043: E/AndroidRuntime(798):      at com.belonogov.connectjdbc.ConnectJDBCActivity.onCreate(ConnectJDBCActivity.java:27)

This means: Lookup the class ConnectJDBCActivity.java, line 81 and look what reference might be null.