Android Cordova诊断插件不工作
我使用诊断插件来获取位置是否打开的信息。该插件一直工作正常,直到我因为代码中的一些问题将其删除 现在,当我在同一个应用程序中再次添加插件时,它就不起作用了 同一个插件正在我为演示目的创建的另一个应用程序中工作 我还尝试了诊断插件的旧版本Android Cordova诊断插件不工作,android,cordova,phonegap-plugins,phonegap,Android,Cordova,Phonegap Plugins,Phonegap,我使用诊断插件来获取位置是否打开的信息。该插件一直工作正常,直到我因为代码中的一些问题将其删除 现在,当我在同一个应用程序中再次添加插件时,它就不起作用了 同一个插件正在我为演示目的创建的另一个应用程序中工作 我还尝试了诊断插件的旧版本 function checkLocationEnabled(){ cordova.plugins.diagnostic.isLocationEnabled(function(enabled){ alert("Location is " +
function checkLocationEnabled(){
cordova.plugins.diagnostic.isLocationEnabled(function(enabled){
alert("Location is " + (enabled ? "enabled" : "disabled"));
alert(enabled);
if(enabled == false){
cordova.plugins.locationAccuracy.canRequest(function(canRequest){
if(canRequest){
cordova.plugins.locationAccuracy.request(function(){
alert("GPS turned on");
setLatitudeLongitude();
}, function (error){
alert("Request failed");
if(error){
// Android only
alert("error code="+error.code+"; error message="+error.message);
if(error.code !== cordova.plugins.locationAccuracy.ERROR_USER_DISAGREED){
if(window.confirm("Failed to automatically set Location Mode to 'High Accuracy'. Would you like to switch to the Location Settings page and do this manually?")){
cordova.plugins.diagnostic.switchToLocationSettings();
}
}
}
}, cordova.plugins.locationAccuracy.REQUEST_PRIORITY_HIGH_ACCURACY // iOS will ignore this
);
}
});
} else if (enabled == true){
setLatitudeLongitude();
}
}, function(error){
alert("The following error occurred: "+error);
});
}
我的config.xml文件中的条目
<plugin name="cordova.plugins.diagnostic" spec="~3.6.5" />
Cordova版本:6.5.0
已安装的平台:
安卓6.2.3
浏览器4.1.0
ios 4.3.1
<preference name="android-minSdkVersion" value="14" />
尝试在chrome上进行调试,结果显示错误“无法读取未定义的属性诊断”
另外,我使用的是Windows7,我已经在不同版本的android 5、5.1、6.0上测试了相同的应用程序。(三星+索尼)
它以前工作并显示“位置已启用/禁用”警报
它显示未定义的错误“无法读取属性isLocationEnabled”
这表示cordova.plugins.diagnostic
对象不可用
这通常是由于在触发deviceready
事件之前试图调用插件造成的,因为Cordova在运行时动态加载插件的JS组件
另一个潜在原因是插件未正确安装到项目中-如果源代码中列出了
diagnostic.js
,请检查Chrome开发工具。如果不存在,请执行cordova platform rm android和&cordova platform add android
以重建本机android项目。您需要比“它不工作”更具体。描述预期行为与实际行为。提供测试环境的详细信息,例如运行Android 7.1.1的设备。如果生成了JS或本机错误消息,请发布它们:尝试将Chrome Dev工具连接到Webview以查看JS错误,并在代码中放置断点以逐步完成调试。@DaveAlden完成了我检查了浏览器,diagnostic.JS未在源代码中列出。此外,我确实删除了android平台,并再次添加了它。还是同一个问题。应用程序中的plugins文件夹包含cordova.plugins.diagnostic,config.xml中有一个关于它的条目,但它仍然不工作。我检查了浏览器
-你是说连接到Android设备的Chrome DevTools(cordova run Android
),对吗?因为插件当然不能在浏览器环境下工作(cordova run browser
),因为它需要一个本地移动环境是的,我再次删除了android平台,再次添加。将我的手机与DevTools“cordova run android”连接。插件第一次正常工作时,出现警告“位置已禁用”。当我第二次启动应用程序时,它再次无法工作。控制台显示“无法读取未定义的属性诊断”。最终通过在设备就绪函数中调用此函数解决了此问题。谢谢你@DaveAlden