2016-09-16 2 views
0

На платформах браузера и iOS местоположение работает хорошо и отображает требуемые данные. На Android он показывает текущую ошибку:Cordova Phonegap - привязка к геолокации Android показывает ошибку: приложение не имеет достаточной ошибки разрешения геолокации

Application does not have sufficient geolocation permissions error 

ресурсы/Config.xml:

<?xml version='1.0' encoding='utf-8'?> 
<widget id="io.cordova.hellocordova" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <preference name="AllowInlineMediaPlayback" value="false" /> 
    <preference name="BackupWebStorage" value="cloud" /> 
    <!-- Set DisallowOverscroll to true to avoid bounce effect --> 
    <preference name="DisallowOverscroll" value="true" /> 
    <preference name="EnableViewportScale" value="false" /> 
    <preference name="KeyboardDisplayRequiresUserAction" value="true" /> 
    <preference name="MediaPlaybackRequiresUserAction" value="false" /> 
    <preference name="SuppressesIncrementalRendering" value="false" /> 
    <preference name="GapBetweenPages" value="0" /> 
    <preference name="PageLength" value="0" /> 
    <preference name="PaginationBreakingMode" value="page" /> 
    <preference name="PaginationMode" value="unpaginated" /> 
    <feature name="LocalStorage"> 
     <param name="ios-package" value="CDVLocalStorage" /> 
    </feature> 
    <feature name="HandleOpenUrl"> 
     <param name="ios-package" value="CDVHandleOpenURL" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <feature name="IntentAndNavigationFilter"> 
     <param name="ios-package" value="CDVIntentAndNavigationFilter" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <feature name="GestureHandler"> 
     <param name="ios-package" value="CDVGestureHandler" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <feature name="PushNotification"> 
     <param name="ios-package" value="PushPlugin" /> 
    </feature> 
    <feature name="Vibration"> 
     <param name="ios-package" value="CDVVibration" /> 
    </feature> 
    <feature name="Device"> 
     <param name="ios-package" value="CDVDevice" /> 
    </feature> 
    <feature name="Accelerometer"> 
     <param name="ios-package" value="CDVAccelerometer" /> 
    </feature> 
    <feature name="Compass"> 
     <param name="ios-package" value="CDVCompass" /> 
    </feature> 
    <feature name="Contacts"> 
     <param name="ios-package" value="CDVContacts" /> 
    </feature> 
    <feature name="Camera"> 
     <param name="ios-package" value="CDVCamera" /> 
    </feature> 
    <preference name="CameraUsesGeolocation" value="false" /> 
    <preference name="AndroidPersistentFileLocation" value="Internal" /> 
    <feature name="File"> 
     <param name="ios-package" value="CDVFile" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <feature name="Geolocation"> 
     <param name="ios-package" value="CDVLocation" /> 
    </feature> 
    <feature name="Globalization"> 
     <param name="ios-package" value="CDVGlobalization" /> 
    </feature> 
    <feature name="InAppBrowser"> 
     <param name="ios-package" value="CDVInAppBrowser" /> 
    </feature> 
    <feature name="Capture"> 
     <param name="ios-package" value="CDVCapture" /> 
    </feature> 
    <feature name="NetworkStatus"> 
     <param name="ios-package" value="CDVConnection" /> 
    </feature> 
    <feature name="SplashScreen"> 
     <param name="ios-package" value="CDVSplashScreen" /> 
    </feature> 
    <feature name="StatusBar"> 
     <param name="ios-package" value="CDVStatusBar" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <preference name="StatusBarOverlaysWebView" value="true" /> 
    <preference name="StatusBarStyle" value="default" /> 
    <feature name="Console"> 
     <param name="ios-package" value="CDVLogger" /> 
    </feature> 
    <feature name="FileTransfer"> 
     <param name="ios-package" value="CDVFileTransfer" /> 
    </feature> 
    <feature name="CDVWKWebViewEngine"> 
     <param name="ios-package" value="CDVWKWebViewEngine" /> 
    </feature> 
    <feature name="http://api.phonegap.com/1.0/geolocation"/> 
<plugin name="cordova-plugin-geolocation" source="npm" /> 

    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" /> 
    <allow-intent href="itms:*" /> 
    <allow-intent href="itms-apps:*" /> 
    <name>HelloCordova</name> 
    <description> 
     A sample Apache Cordova application that responds to the deviceready event. 
    </description> 
    <author email="[email protected]" href="http://cordova.io"> 
     Apache Cordova Team 
    </author> 
    <content src="index.html" /> 
    <access origin="*" /> 
    <allow-navigation href="http://*.websitename.com" /> 
    <allow-navigation href="https://*.youtube.com" /> 
    <allow-intent href="http://*/*" /> 
    <allow-intent href="https://*/*" /> 
    <allow-intent href="tel:*" /> 
    <allow-intent href="sms:*" /> 
    <allow-intent href="mailto:*" /> 
    <allow-intent href="geo:*" /> 
</widget> 

Android/Рез/XML/config.xml

<?xml version='1.0' encoding='utf-8'?> 
<widget id="io.cordova.hellocordova" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <preference name="AllowInlineMediaPlayback" value="false" /> 
    <preference name="BackupWebStorage" value="cloud" /> 
    <!-- Set DisallowOverscroll to true to avoid bounce effect --> 
    <preference name="DisallowOverscroll" value="true" /> 
    <preference name="EnableViewportScale" value="false" /> 
    <preference name="KeyboardDisplayRequiresUserAction" value="true" /> 
    <preference name="MediaPlaybackRequiresUserAction" value="false" /> 
    <preference name="SuppressesIncrementalRendering" value="false" /> 
    <preference name="GapBetweenPages" value="0" /> 
    <preference name="PageLength" value="0" /> 
    <preference name="PaginationBreakingMode" value="page" /> 
    <preference name="PaginationMode" value="unpaginated" /> 
    <feature name="LocalStorage"> 
     <param name="ios-package" value="CDVLocalStorage" /> 
    </feature> 
    <feature name="HandleOpenUrl"> 
     <param name="ios-package" value="CDVHandleOpenURL" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <feature name="IntentAndNavigationFilter"> 
     <param name="ios-package" value="CDVIntentAndNavigationFilter" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <feature name="GestureHandler"> 
     <param name="ios-package" value="CDVGestureHandler" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <feature name="PushNotification"> 
     <param name="ios-package" value="PushPlugin" /> 
    </feature> 
    <feature name="Vibration"> 
     <param name="ios-package" value="CDVVibration" /> 
    </feature> 
    <feature name="Device"> 
     <param name="ios-package" value="CDVDevice" /> 
    </feature> 
    <feature name="Accelerometer"> 
     <param name="ios-package" value="CDVAccelerometer" /> 
    </feature> 
    <feature name="Compass"> 
     <param name="ios-package" value="CDVCompass" /> 
    </feature> 
    <feature name="Contacts"> 
     <param name="ios-package" value="CDVContacts" /> 
    </feature> 
    <feature name="Camera"> 
     <param name="ios-package" value="CDVCamera" /> 
    </feature> 
    <preference name="CameraUsesGeolocation" value="false" /> 
    <preference name="AndroidPersistentFileLocation" value="Internal" /> 
    <feature name="File"> 
     <param name="ios-package" value="CDVFile" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <feature name="Geolocation"> 
     <param name="ios-package" value="CDVLocation" /> 
    </feature> 
    <feature name="Globalization"> 
     <param name="ios-package" value="CDVGlobalization" /> 
    </feature> 
    <feature name="InAppBrowser"> 
     <param name="ios-package" value="CDVInAppBrowser" /> 
    </feature> 
    <feature name="Capture"> 
     <param name="ios-package" value="CDVCapture" /> 
    </feature> 
    <feature name="NetworkStatus"> 
     <param name="ios-package" value="CDVConnection" /> 
    </feature> 
    <feature name="SplashScreen"> 
     <param name="ios-package" value="CDVSplashScreen" /> 
    </feature> 
    <feature name="StatusBar"> 
     <param name="ios-package" value="CDVStatusBar" /> 
     <param name="onload" value="true" /> 
    </feature> 
    <preference name="StatusBarOverlaysWebView" value="true" /> 
    <preference name="StatusBarStyle" value="default" /> 
    <feature name="Console"> 
     <param name="ios-package" value="CDVLogger" /> 
    </feature> 
    <feature name="FileTransfer"> 
     <param name="ios-package" value="CDVFileTransfer" /> 
    </feature> 
    <feature name="CDVWKWebViewEngine"> 
     <param name="ios-package" value="CDVWKWebViewEngine" /> 
    </feature> 
    <feature name="http://api.phonegap.com/1.0/geolocation"/> 
<plugin name="cordova-plugin-geolocation" source="npm" /> 

    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" /> 
    <allow-intent href="itms:*" /> 
    <allow-intent href="itms-apps:*" /> 
    <name>HelloCordova</name> 
    <description> 
     A sample Apache Cordova application that responds to the deviceready event. 
    </description> 
    <author email="[email protected]" href="http://cordova.io"> 
     Apache Cordova Team 
    </author> 
    <content src="index.html" /> 
    <access origin="*" /> 
    <allow-navigation href="http://*.websitename.com" /> 
    <allow-navigation href="https://*.youtube.com" /> 
    <allow-intent href="http://*/*" /> 
    <allow-intent href="https://*/*" /> 
    <allow-intent href="tel:*" /> 
    <allow-intent href="sms:*" /> 
    <allow-intent href="mailto:*" /> 
    <allow-intent href="geo:*" /> 
</widget> 

AndroidManifest.xml

<?xml version='1.0' encoding='utf-8'?> 
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> 



    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 


    <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="app name" android:supportsRtl="true"> 
     <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize"> 
      <intent-filter android:label="@string/launcher_name"> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" /> 
</manifest> 

Плагины/орг. .apache.cordova.geolocation/plugin.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    Licensed to the Apache Software Foundation (ASF) under one 
    or more contributor license agreements. See the NOTICE file 
    distributed with this work for additional information 
    regarding copyright ownership. The ASF licenses this file 
    to you under the Apache License, Version 2.0 (the 
    "License"); you may not use this file except in compliance 
    with the License. You may obtain a copy of the License at 

    http://www.apache.org/licenses/LICENSE-2.0 

    Unless required by applicable law or agreed to in writing, 
    software distributed under the License is distributed on an 
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
    KIND, either express or implied. See the License for the 
    specific language governing permissions and limitations 
    under the License. 
--> 

<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" 
xmlns:rim="http://www.blackberry.com/ns/widgets" 
xmlns:android="http://schemas.android.com/apk/res/android" 
      id="org.apache.cordova.geolocation" 
     version="0.3.12"> 

    <name>Geolocation</name> 
    <description>Cordova Geolocation Plugin</description> 
    <license>Apache 2.0</license> 
    <keywords>cordova,geolocation</keywords> 
    <repo>https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git</repo> 
    <issue>https://issues.apache.org/jira/browse/CB/component/12320638</issue> 

    <!-- android --> 
    <platform name="android"> 

     <config-file target="AndroidManifest.xml" parent="/*"> 
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

     </config-file> 

    </platform> 

    <!-- amazon-fireos --> 
    <platform name="amazon-fireos"> 

     <config-file target="AndroidManifest.xml" parent="/*"> 
      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
     </config-file> 

    </platform> 

    <!-- ios --> 
    <platform name="ios"> 

     <js-module src="www/Coordinates.js" name="Coordinates"> 
      <clobbers target="Coordinates" /> 
     </js-module> 

     <js-module src="www/PositionError.js" name="PositionError"> 
      <clobbers target="PositionError" /> 
     </js-module> 

     <js-module src="www/Position.js" name="Position"> 
      <clobbers target="Position" /> 
     </js-module> 

     <js-module src="www/geolocation.js" name="geolocation"> 
      <clobbers target="navigator.geolocation" /> 
     </js-module> 

     <config-file target="config.xml" parent="/*"> 
      <feature name="Geolocation"> 
       <param name="ios-package" value="CDVLocation"/> 
      </feature> 
     </config-file> 
     <header-file src="src/ios/CDVLocation.h" /> 
     <source-file src="src/ios/CDVLocation.m" /> 
     <framework src="CoreLocation.framework" /> 

     <config-file target="*-Info.plist" parent="NSLocationWhenInUseUsageDescription"> 
      <string></string> 
     </config-file> 

    </platform> 

    <!-- blackberry10 --> 
    <platform name="blackberry10"> 

     <js-module src="www/blackberry10/GeolocationProxy.js" name="GeolocationProxy"> 
      <runs /> 
     </js-module> 

     <js-module src="www/Coordinates.js" name="Coordinates"> 
      <clobbers target="Coordinates" /> 
     </js-module> 

     <js-module src="www/PositionError.js" name="PositionError"> 
      <clobbers target="PositionError" /> 
     </js-module> 

     <js-module src="www/Position.js" name="Position"> 
      <clobbers target="Position" /> 
     </js-module> 

     <js-module src="www/geolocation.js" name="geolocation"> 
      <clobbers target="navigator.geolocation" /> 
     </js-module> 

     <config-file target="www/config.xml" parent="/widget"> 
      <feature name="Geolocation" value="Geolocation"/> 
     </config-file> 

     <config-file target="www/config.xml" parent="/widget/rim:permissions"> 
      <rim:permit>read_geolocation</rim:permit> 
     </config-file> 

    </platform> 

    <!-- ubuntu --> 
    <platform name="ubuntu"> 
     <js-module src="www/Coordinates.js" name="Coordinates"> 
      <clobbers target="Coordinates" /> 
     </js-module> 

     <js-module src="www/PositionError.js" name="PositionError"> 
      <clobbers target="PositionError" /> 
     </js-module> 

     <js-module src="www/Position.js" name="Position"> 
      <clobbers target="Position" /> 
     </js-module> 

     <js-module src="www/geolocation.js" name="geolocation"> 
      <clobbers target="navigator.geolocation" /> 
     </js-module> 

     <source-file src="src/ubuntu/geolocation.cpp" /> 
     <header-file src="src/ubuntu/geolocation.h" /> 
     <config-file target="config.xml" parent="/*"> 
      <feature name="Geolocation"> 
       <param policy_group="location" policy_version="1" /> 
      </feature> 
     </config-file> 
    </platform> 

    <!-- wp7 --> 
    <platform name="wp7"> 

     <config-file target="Properties/WMAppManifest.xml" parent="/Deployment/App/Capabilities"> 
      <Capability Name="ID_CAP_LOCATION" /> 
     </config-file> 

     <source-file src="src/wp/Geolocation.cs" /> 
    </platform> 

    <!-- wp8 --> 
    <platform name="wp8"> 

     <config-file target="Properties/WMAppManifest.xml" parent="/Deployment/App/Capabilities"> 
      <Capability Name="ID_CAP_LOCATION" /> 
     </config-file> 

     <source-file src="src/wp/Geolocation.cs" /> 
    </platform> 

    <!-- windows8 --> 
    <platform name="windows8"> 
     <config-file target="package.appxmanifest" parent="/Package/Capabilities"> 
      <DeviceCapability Name="location" /> 
     </config-file> 

     <js-module src="src/windows/GeolocationProxy.js" name="GeolocationProxy"> 
      <runs /> 
     </js-module> 

     <js-module src="www/Coordinates.js" name="Coordinates"> 
      <clobbers target="Coordinates" /> 
     </js-module> 

     <js-module src="www/PositionError.js" name="PositionError"> 
      <clobbers target="PositionError" /> 
     </js-module> 

     <js-module src="www/Position.js" name="Position"> 
      <clobbers target="Position" /> 
     </js-module> 

     <js-module src="www/geolocation.js" name="geolocation"> 
      <clobbers target="navigator.geolocation" /> 
     </js-module> 
    </platform> 

    <!-- windows universal apps (Windows 8.1, Windows Phone 8.1, Windows 8.0) --> 
    <platform name="windows"> 
     <config-file target="package.appxmanifest" parent="/Package/Capabilities"> 
      <DeviceCapability Name="location" /> 
     </config-file> 

     <js-module src="src/windows/GeolocationProxy.js" name="GeolocationProxy"> 
      <runs /> 
     </js-module> 

     <js-module src="www/Coordinates.js" name="Coordinates"> 
      <clobbers target="Coordinates" /> 
     </js-module> 

     <js-module src="www/PositionError.js" name="PositionError"> 
      <clobbers target="PositionError" /> 
     </js-module> 

     <js-module src="www/Position.js" name="Position"> 
      <clobbers target="Position" /> 
     </js-module> 

     <js-module src="www/geolocation.js" name="geolocation"> 
      <clobbers target="navigator.geolocation" /> 
     </js-module> 
    </platform> 

    <!-- firefoxos --> 
    <platform name="firefoxos"> 
     <config-file target="config.xml" parent="/*"> 
      <permission name="geolocation" description="Required for accessing user location." /> 
     </config-file> 

     <js-module src="src/firefoxos/GeolocationProxy.js" name="GeolocationProxy"> 
      <runs /> 
     </js-module> 

     <js-module src="www/Coordinates.js" name="Coordinates"> 
      <clobbers target="Coordinates" /> 
     </js-module> 

     <js-module src="www/PositionError.js" name="PositionError"> 
      <clobbers target="PositionError" /> 
     </js-module> 

     <js-module src="www/Position.js" name="Position"> 
      <clobbers target="Position" /> 
     </js-module> 

     <js-module src="www/geolocation.js" name="geolocation"> 
      <clobbers target="navigator.geolocation" /> 
     </js-module> 
    </platform> 
</plugin> 

Javascript для извлечения местоположения:

<script> 



          window.onload = function() 
          { 
           document.addEventListener("deviceready",init,false); 
           document.addEventListener("deviceready", onDeviceReady, false); 


          } 

         function onDeviceReady(){ 

         } 
         function init() 
         { 
          navigator.geolocation.getCurrentPosition(positionSuccess,positionError); 

         } 

         function positionSuccess(position) 
         { 
          var latitude = position.coords.latitude; 
          var longitude = position.coords.longitude; 

          document.getElementById('lat').value = latitude; 
         document.getElementById('lon').value = longitude; 

         } 


         function positionError(error) 
         { 
          alert(error.message); 
         } 









         </script> 

Любой совет или помощь будет оценена.

ответ

1

В случае, если кому-то нужен ответ, я нашел его здесь: https://github.com/driftyco/ng-cordova/issues/743

Я только что обновил плагин и исчез ошибка:

cordova plugin rm org.apache.cordova.geolocation 
cordova plugin add cordova-plugin-geolocation 
+0

Да! В Visual Studio config.xml -> УДАЛИТЬ текущий плагин, а затем обновите плагин cordova-plugin-geolocation. – pollaris

Смежные вопросы