Сбой приложения Android на Android 4.4 из-за отказа в разрешении GPS

Мое приложение для Android дает сбой, когда я пытаюсь включить GPS на моем Android 4.4 (Kitkat). До Android 4.3 работал нормально. Я использую следующий код для включения GPS

Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", true);
this.sendBroadcast(intent);

В моем Log Cat это дает исключение безопасности.

Мои данные LogCat такие: -

11-27 12:47:37.410: E/AndroidRuntime(3818): Caused by: java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.location.GPS_ENABLED_CHANGE from pid=3818, uid=10084
11-27 12:47:37.410: E/AndroidRuntime(3818):  at android.os.Parcel.readException(Parcel.java:1461)
11-27 12:47:37.410: E/AndroidRuntime(3818):  at android.os.Parcel.readException(Parcel.java:1415)
11-27 12:47:37.410: E/AndroidRuntime(3818):  at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:2373)
11-27 12:47:37.410: E/AndroidRuntime(3818):  at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1127)
11-27 12:47:37.410: E/AndroidRuntime(3818):  at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:365)
11-27 12:47:37.410: E/AndroidRuntime(3818):  at com.sus.SUSV7_1.Activity.Splash_ScreenActivity.turnGPSOn(Splash_ScreenActivity.java:66)
11-27 12:47:37.410: E/AndroidRuntime(3818):  at com.sus.SUSV7_1.Activity.Splash_ScreenActivity.onCreate(Splash_ScreenActivity.java:26)

Когда я комментирую код, он работает нормально. Есть ли какой-либо конкретный параметр для включения GPS вручную на Android 4.4.


person Praveen Sharma    schedule 27.11.2013    source источник
comment
Вы пытаетесь включить / выключить GPS грамматически?   -  person Tarun Varshney    schedule 27.11.2013
comment
Да, я пытаюсь включить GPS вручную, если он выключен. и работает нормально до 4.3   -  person Praveen Sharma    schedule 27.11.2013


Ответы (2)


Это никогда не предназначалось для общедоступного API.

По этой теме даже есть проблема в системе отслеживания ошибок AOSP: https://code.google.com/p/android/issues/detail?id=35924

Думаю, они только что полностью починили эту систему безопасности.

Вы можете попросить пользователя изменить настройки GPS:

startActivity(context, new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
person flx    schedule 27.11.2013
comment
Вы просите пользователя включить GPS - person Stupidus; 27.11.2013
comment
@praveenSharma: я добавил намерение к ответу. - person flx; 27.11.2013
comment
есть ли способ включить GPS с помощью намерения, как я сделал Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE"); - person Praveen Sharma; 27.11.2013
comment
Нет, нет. Это ошибка используемого вами API. Ошибка была исправлена. - person flx; 27.11.2013
comment
@fix, как вы говорите, ошибка была исправлена. значит этот код должен работать после обновления API? - person Praveen Sharma; 27.11.2013
comment
Вы не понимаете: ошибка заключается в том, что вы могли изменить настройки посредством трансляции. исправление делает это невозможным. Это никогда не должно было работать так, как раньше. - person flx; 27.11.2013

person    schedule
comment
Ответы с примером кода хороши, однако с таким количеством кода было бы неплохо добавить какое-то объяснение того, что он делает, откуда он берется и т. д. - person John Willemse; 20.06.2014
comment
пожалуйста, избегайте автоматического включения GPS в 4.4, если вы уже успешно внедрили этот код, то я уверен, что этот код не будет работать на всех устройствах 4.4, поэтому для этого используйте этот сервис для использования функции GPS. полный ответ по ссылке stackoverflow. com/questions/22528984/ - person Imran Khan; 23.06.2014
comment
как этот ответ связан с вопросом ... я потратил свое время на анализ и надеялся найти что-то значимое. - person Anchal; 19.01.2015