2016-06-24 5 views
0

Android 6.0以降でGeolocationの権限が正常に取得されましたが、Android 4.4.4で動作するようにはできません。チタンのAndroid Geolocation 6.0より古いOSの許可

私はこれが今、私はまだTiApp.xml

<android xmlns:android="http://schemas.android.com/apk/res/android"> 
    <manifest> 
     <application android:theme="@style/Theme.NoActionBar"/> 
     <!-- Camera Permissions --> 
     <uses-permission android:name="android.permission.CAMERA"/> 
     <uses-feature android:name="android.hardware.camera"/> 
     <uses-feature android:name="android.hardware.camera.autofocus"/> 
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> 
    </manifest> 
</android> 

に次の権限を追加しました。この

var hasLocationPermissions = Ti.Geolocation.hasLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS); 

から来ているコンソールに

dalvikvm: Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations 
[DEBUG] : dalvikvm: VFY: replacing opcode 0x6e at 0x0002 
[INFO] : dalvikvm: Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType 

をこれらのエラーを得続けます運がない。これを行うために使用するコードは次のとおりです。私はバージョンをチェックすることによっても迂回しようとしました

Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_HIGH; 
    Titanium.Geolocation.purpose = 'Get Current Location to search local Items'; 
    var hasLocationPermissions = Ti.Geolocation.hasLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS); 

    if (Titanium.Platform.model != "Simulator"){ 
     Ti.API.info("ANDROID VERSION:"+Ti.Platform.version); 
     if(Alloy.Globals.versionCompare(Ti.Platform.version, "6.0") == -1){ 
      getCurrentPosition(); 
     } else 
     { 
      if(hasLocationPermissions == true){ 
       getCurrentPosition(); 
      } else { 
       var win = Alloy.createController('locationPermission', {callback: function(e){ 
        Ti.Geolocation.requestLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS, function(e) { 
         if (e.success) { 
          getCurrentPosition(); 
         } else { 
          Alloy.Globals.createAlertDialog('There seem to be issues with determining your location.\Please enable Location Services in your Settings to use Fluid'); 
         } 
        }); 
       }}).getView(); 
       win.open(); 
      } 
     } 

    } else { 
     Ti.API.info("LOCATION FOR SIMULATOR SET TO GALVANIZE - 1644 PLATTE DENVER"); 
     Alloy.Globals.currentLocation = {attributes:{coordinates:{"lat": 39.757885, "lng": -105.0082375}}};//Galvanize 
     if(successCallback) successCallback(); 
    } 

誰かがこれを解決しましたか?私は5.2.0を使用しています。GA

答えて

1

6より前のアンドロイドバージョン、または23より下のバージョンのSDKでは、インストール時にすべての権限を依頼しています。したがって、機能が使用されているときのこの新しい許可要求は、Android 6以降、またはSDK 23以降でのみ必要です。私の5.3GAのアプリケーションは、場所が要求されているのに、バージョン<の携帯電話はいつものようにインストール時にアクセス許可を求めると、marshmallowのアクセス許可を求めます。私のコードは、アンドロイドのバージョンに基づく条件ロジックはありません。

+0

Mmm。だから私がGenymotionエミュレータでそれを実行していると、その許可は表示されませんか? –

+0

私のHTC OneとS6では、インストール時にすべての権限を要求します。私のS6では、要求されたときに権限を要求します。ワンとS5にとって、彼らは決して再び尋ねません。 S6の場合、私が拒否すれば、次回のロケーションが要求されます。それを受け入れると、設定をリセットしない限り、再度尋ねません。私はgenymotionでgpsを設定していない、私はいくつか持っているのは十分幸運だとしてデバイスでそれをテストする。 – roddog

+0

私はS6がマシュマロの唯一の人だと言わなければならない。 – roddog

関連する問題