2017-07-13 83 views
1

我正在使用診斷插件來獲取有關該位置是否打開的信息。該插件工作正常,直到我刪除它由於代碼中的一些問題。Cordova診斷插件不工作

現在,當我在同一個應用程序中再次添加插件時,它不起作用。

相同的插件正在另一個應用程序,我爲演示目的而創建。

我也嘗試過診斷插件的舊版本。在我config.xml中

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); 
    }); 
} 

進入文件

<plugin name="cordova.plugins.diagnostic" spec="~3.6.5" /> 

科爾多瓦版本:6.5.0

安裝平臺: 的Android 6.2.3 瀏覽器4.1.0 ios 4.3.1

<preference name="android-minSdkVersion" value="14" /> 

試圖在Chrome上進行調試,它顯示未定義的錯誤「無法讀取屬性診斷」。

此外,我正在使用Windows 7,我測試了相同的應用程序在不同版本的Android 5,5.1,6.0。 (三星+索尼)

它曾用於之前的工作,並顯示'位置啓用/禁用'的警報。

+0

你需要比「它不工作」更具體。描述預期與實際行爲。提供測試環境的詳細信息,例如運行Android 7.1.1的設備。如果生成了JS或本機錯誤消息,請發佈它們:嘗試將Chrome開發工具連接到Web視圖以查看JS錯誤並在代碼中放置斷點以逐步調試它。 – DaveAlden

+0

@DaveAlden完成那 –

回答

2

它顯示錯誤'can not read property isLocationEnabled'of undefined。

這表示cordova.plugins.diagnostic對象不可用。

由於Cordova在運行時動態加載插件的JS組件,試圖在事件觸發之前調用插件最常引起這種情況。

另一個潛在的原因是該插件沒有正確安裝到項目中 - 如果diagnostic.js在源代碼中列出,請檢查Chrome開發工具。如果不存在,請執行cordova platform rm android && cordova platform add android以重建原生Android項目。

+0

我檢查了瀏覽器,diagnostic.js沒有在源代碼中列出。我也刪除了Android平臺並再次添加。還是同樣的問題。應用程序中的plugins文件夾包含cordova.plugins.diagnostic,並且在config.xml中有一個關於它的條目,但它仍然不起作用。 –

+0

'我檢查了瀏覽器' - 你的意思是Chrome DevTools連接到Android設備('cordova run android'),對不對?因爲這個插件在瀏覽器環境('cordova run browser')中無法運行,因爲它需要原生的移動環境 – DaveAlden

+0

是的,我再次刪除了平臺android並再次添加。將我的手機與DevTools的cordova run android'連接起來。插件第一次正常工作,並出現警告「位置已禁用」。當我第二次啓動應用程序時,它再次不起作用。 控制檯顯示「無法讀取未定義的屬性診斷」。 –