【发布时间】:2017-01-29 22:50:54
【问题描述】:
当应用程序没有位置权限并且我打开它时,它会请求权限,并且在我授予权限后它会崩溃。如果它有权限,它可以顺利运行。
我的位置代码是这样的。if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(
function(position){
// on success
loadMap(position.coords.latitude, position.coords.longitude);
},
function(e){
// on error
loadMap(0,0);
}, {maximumAge: 30000, timeout: 5000, enableHighAccuracy: true})
loadMap 函数传递参数,所以我可以创建一个 mapbox 地图。
我正在使用 phonegap 6.4.3 和 cordova 6.4.0 并将其编译为带有 Android 7.1 的虚拟 nexus 5
这些是我单击“允许”后收到的错误消息错误日志
01-30 18:02:55.545 238 238 E SELinux : avc: denied { find } for service=batterymanager scontext=u:r:untrusted_app :s0:c512,c768 tcontext=u:object_r:battery_service:s0 tclass=service_manager
01-30 18:02:55.662 18458 18502 E libEGL : validate_display:255 错误 3008 (EGL_BAD_DISPLAY)
01-30 18:02:58.131 18458 18458 E cr_LocationProvider:从系统注册位置更新时捕获安全异常。该应用程序没有足够的地理定位权限。
01-30 18:02:58.134 18458 18458 E cr_LocationProvider:从系统注册位置更新时捕获安全异常。该应用程序没有足够的地理定位权限。
01-30 18:02:58.136 18458 18458 E cr_LocationProvider:从系统注册位置更新时捕获安全异常。该应用程序没有足够的地理定位权限。
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 致命异常: main
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 进程: com.phonegap.helloworld, PID: 18458
01-30 18:03:00.577 18458 18458 E AndroidRuntime:主题:主题:{com.cyanogenmod.trebuchet=overlay:system}
01-30 18:03:00.577 18458 18458 E AndroidRuntime: java.lang.RuntimeException: 传递结果失败 ResultInfo{who=@android:requestPermissions:, request=0, result=-1, data=Intent { act=android.content .pm.action.REQUEST_PERMISSIONS(有附加功能)}} 到活动 {com.phonegap.helloworld/com.phonegap.helloworld.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法 'void org.apache.cordova.CallbackContext .sendPluginResult(org.apache.cordova.PluginResult)' 在空对象引用上
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 android.app.ActivityThread.deliverResults(ActivityThread.java:3733)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:3776)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 android.app.ActivityThread.-wrap16(ActivityThread.java)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1412)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 android.os.Handler.dispatchMessage(Handler.java:102)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 android.os.Looper.loop(Looper.java:148)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 android.app.ActivityThread.main(ActivityThread.java:5461)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 由: java.lang.NullPointerException: 尝试调用虚拟方法'void org.apache.cordova.CallbackContext.sendPluginResult(org.apache.cordova.PluginResult)空对象引用
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 org.apache.cordova.geolocation.Geolocation.onRequestPermissionResult(Geolocation.java:77)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 org.apache.cordova.CordovaInterfaceImpl.onRequestPermissionResult(CordovaInterfaceImpl.java:214)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 org.apache.cordova.CordovaActivity.onRequestPermissionsResult(CordovaActivity.java:508)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 android.app.Activity.dispatchRequestPermissionsResult(Activity.java:6582)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 android.app.Activity.dispatchActivityResult(Activity.java:6460)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: 在 android.app.ActivityThread.deliverResults(ActivityThread.java:3729)
01-30 18:03:00.577 18458 18458 E AndroidRuntime: ... 9 更多
【问题讨论】:
-
检查你的logcat并在这里发布错误,这样会更清楚
-
这应该是报错报告。我也在我的手机上试过了,我得到了同样的错误。