Я пытаюсь вызвать модуль геолокации в том, что, по моему мнению, очень простой способ, но я запутался в ошибках. Я тестирую на физическом телефоне, который является Samsung Galaxy S3 под управлением Android 4.4.2. Вот код, который запускается с внутри .js контроллера для моей страницы:Appcelerator Titanium 5.5.1 Android Geolocation Module Дает checkSelfPermission и requestPermissions Errors
function getGPSCoordinates() {
if (Ti.Geolocation.locationServicesEnabled) {
Ti.Geolocation.purpose = 'Corollate photos with store location';
Ti.Geolocation.preferredProvider = Ti.Geolocation.PROVIDER_GPS;
Ti.Geolocation.getCurrentPosition(function(e) {
if (e.error == true)
console.error(e.error);
else
console.warn(e.coords);
});
}
}
if (Ti.Geolocation.locationServicesEnabled)
getGPSCoordinates();
else {
Ti.Geolocation.requestLocationPermissions(Ti.Geolocation.AUTHORIZATION_WHEN_IN_USE, function(e) {
getGPSCoordinates();
});
}
... и вот ошибки возвращаются в журнале:
[INFO] : dalvikvm: Could not find method android.app.Activity.checkSelfPermission, referenced from method ti.modules.titanium.geolocation.GeolocationModule.hasLocationPermissions
[WARN] : dalvikvm: VFY: unable to resolve virtual method 27: Landroid/app/Activity;.checkSelfPermission (Ljava/lang/String;)I
[INFO] : dalvikvm: Could not find method android.app.Activity.requestPermissions, referenced from method ti.modules.titanium.geolocation.GeolocationModule.requestLocationPermissions
[WARN] : dalvikvm: VFY: unable to resolve virtual method 74: Landroid/app/Activity;.requestPermissions ([Ljava/lang/String;I)V
Я сделал чистое строить и проблемы сохраняются. Я также посмотрел на сборки/Android/AndroidManifest.xml и может видеть, что соответствующие разрешения быть автоматически добавляются в манифесте:
<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_MOCK_LOCATION"/>
Соответствующие части моей среды разработки заключаются в следующем:
Operating System
Name = Mac OS X
Version = 10.11.6
Architecture = 64bit
# CPUs = 8
Memory = 16.0GB
Node.js
Node.js Version = 0.12.7
npm Version = 2.11.3
Appcelerator CLI
Installer = 4.2.7
Core Package = 5.5.1
Titanium CLI
CLI Version = 5.0.9
node-appc Version = 0.2.31
Titanium SDKs
5.5.1.GA
Version = 5.5.1
Install Location = /Users/xxxxxxxxxx/Library/Application Support/Titanium/mobilesdk/osx/5.5.1.GA
Platforms = android, mobileweb, iphone
git Hash = b18727f
git Timestamp = 09/27/16 05:38
node-appc Version = 0.2.36
Mac OS X
Command Line Tools = installed
Intel® Hardware Accelerated Execution Manager (HAXM)
Installed = yes
Memory Limit = 2 GB
Java Development Kit
Version = 1.8.0_102
Java Home = /Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
Android SDK
Android Executable = /Users/xxxxxxxxxx/Library/Android/sdk/tools/android
ADB Executable = /Users/xxxxxxxxxx/Library/Android/sdk/platform-tools/adb
SDK Path = /Users/xxxxxxxxxx/Library/Android/sdk
Android NDK
NDK Path = not found
NDK Version = not found
Android Platforms
1) android-23
Name = Android 6.0
API Level = 23
Revision = 3
Skins = HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800, WVGA854, WXGA720, WXGA800, WXGA800-7in
ABIs = x86
Path = /Users/xxxxxxxxxx/Library/Android/sdk/platforms/android-23
Android Add-Ons
None
Connected Android Devices
SPH-L710
ID = 8c1af53b
State = device
SDK Version = 4.4.2 (android-19)
ABIs = armeabi-v7a, armeabi
Пожалуйста, дайте мне знать, если есть что-то, что я должен делать по-другому. Спасибо!
Я вызываю метод requestLocationPermissions(), если обнаруживаю, что Ti.Geolocation.locationServicesEnabled = false. Я видел другую тему, о которой вы говорили ранее, но скриншот, который он показывает, вручную переходит в настройки и включает GPS. Я думаю, что большинство людей покидают GPS, и я хочу, чтобы Appcelerator попросил их снова включиться, если это необходимо. – ComputerTinker
Получите запрос, чтобы приложение могло использовать GPS при запуске кода? Я просто попробовал свой код быстро на своем Nexus 6P под управлением Android 7, и он работал без проблем. – Ray
Нет, я никогда не вижу этого запроса, но это то, что я хочу. Похоже, может быть ошибка в том, как это работает в отношении используемой версии Android: https://jira.appcelerator.org/browse/TIMOB-23135 – ComputerTinker