您的位置:首页 > 移动开发 > Android开发

android 2.3 浏览器因GPS闪退问题

2014-07-10 13:46 260 查看
最近在调试smdkv210 android2.3,打开浏览器闪退,设备没有GPS,日志如下:

W/dalvikvm( 546): JNI WARNING: JNI method called with exception raised

W/dalvikvm( 546): in Landroid/webkit/JWebCoreJavaBridge;.sharedTimerFired ()V (NewString)

W/dalvikvm( 546): Pending exception is:

I/dalvikvm( 546): Ljava/lang/IllegalArgumentException;: provider=gps

I/dalvikvm( 546): at android.os.Parcel.readException(Parcel.java:1326)

I/dalvikvm( 546): at android.os.Parcel.readException(Parcel.java:1276)

I/dalvikvm( 546): at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:646)

I/dalvikvm( 546): at android.location.LocationManager._requestLocationUpdates(LocationManager.java:582)

I/dalvikvm( 546): at android.location.LocationManager.requestLocationUpdates(LocationManager.java:446)

I/dalvikvm( 546): at android.webkit.GeolocationService.registerForLocationUpdates(GeolocationService.java:162)

I/dalvikvm( 546): at android.webkit.GeolocationService.start(GeolocationService.java:66)

I/dalvikvm( 546): at android.webkit.JWebCoreJavaBridge.sharedTimerFired(Native Method)

I/dalvikvm( 546): at android.webkit.JWebCoreJavaBridge.fireSharedTimer(JWebCoreJavaBridge.java:91)

I/dalvikvm( 546): at android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:108)

I/dalvikvm( 546): at android.os.Handler.dispatchMessage(Handler.java:99)

I/dalvikvm( 546): at android.os.Looper.loop(Looper.java:123)

I/dalvikvm( 546): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:629)

I/dalvikvm( 546): at java.lang.Thread.run(Thread.java:1019)

I/dalvikvm( 546): "WebViewCoreThread" prio=5 tid=12 NATIVE

I/dalvikvm( 546): | group="main" sCount=0 dsCount=0 obj=0x4059eca0 self=0x334758

I/dalvikvm( 546): | sysTid=560 nice=0 sched=0/0 cgrp=default handle=3373000

I/dalvikvm( 546): at android.webkit.JWebCoreJavaBridge.sharedTimerFired(Native Method)

I/dalvikvm( 546): at android.webkit.JWebCoreJavaBridge.fireSharedTimer(JWebCoreJavaBridge.java:91)

I/dalvikvm( 546): at android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:108)

I/dalvikvm( 546): at android.os.Handler.dispatchMessage(Handler.java:99)

I/dalvikvm( 546): at android.os.Looper.loop(Looper.java:123)

I/dalvikvm( 546): at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:629)

I/dalvikvm( 546): at java.lang.Thread.run(Thread.java:1019)

I/dalvikvm( 546):

E/dalvikvm( 546): VM aborting

I/DEBUG ( 51): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

I/DEBUG ( 51): Build fingerprint: 'generic/full_smdkv210/smdkv210:2.3.1/GINGERBREAD/eng.root.20140707.140037:eng/test-keys'

I/DEBUG ( 51): pid: 546, tid: 560 >>> com.android.browser <<<

I/DEBUG ( 51): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d

I/DEBUG ( 51): r0 fffffe7c r1 deadd00d r2 00000026 r3 00000000

I/DEBUG ( 51): r4 81da5608 r5 00000000 r6 81d87330 r7 00000000

I/DEBUG ( 51): r8 46d8da88 r9 46d8da84 10 46d8da80 fp 00345670

I/DEBUG ( 51): ip 81da5714 sp 46d8d9a0 lr afd191d9 pc 81d461f8 cpsr 20000030

I/DEBUG ( 51): d0 74726f6261204d69 d1 436265572465726e

I/DEBUG ( 51): d2 6f43776569566267 d3 6f4362655724650a

I/DEBUG ( 51): d4 0070006700260032 d5 00260031003d0073

I/DEBUG ( 51): d6 002e0030003d0074 d7 0033003700330037

I/DEBUG ( 51): d8 41143d5f5f27fe4c d9 41143d5f925b317f

I/DEBUG ( 51): d10 0000000000000000 d11 0000000000000000

I/DEBUG ( 51): d12 0000000000000000 d13 0000000000000000

网上说是应为GPS引起的,解决办法如下:GeolocationService.java

*/

public void setEnableGps(boolean enable) {

if (mIsGpsEnabled != enable) {

mIsGpsEnabled = enable;

if (mIsRunning) {

// There's no way to unregister from a single provider, so we can

// only unregister from all, then reregister with all but the GPS.

unregisterFromLocationUpdates();

// registerForLocationUpdates(); 注释掉这个方法

}

}

}

public void onProviderEnabled(String providerName) {

// No need to notify the native side. It's enough to start sending

// valid position fixes again.

if (LocationManager.NETWORK_PROVIDER.equals(providerName)) {

mIsNetworkProviderAvailable = true;

} else if (LocationManager.GPS_PROVIDER.equals(providerName)) {

mIsGpsProviderAvailable = true;

}

}

/**

* LocationListener implementation.

* Called when the provider is disabled.

* @param provider The name of the location provider that is now disabled.

*/

public void onProviderDisabled(String providerName) {

if (LocationManager.NETWORK_PROVIDER.equals(providerName)) {

mIsNetworkProviderAvailable = false;

} else if (LocationManager.GPS_PROVIDER.equals(providerName)) {

mIsGpsProviderAvailable = false;

}

maybeReportError("The last location provider was disabled");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: