2015-11-03 3 views
0

Я пытаюсь использовать GPS в Android, но это дает мне эту ошибку:разрешения запроса Android программы

enter image description here

я положил в манифесте эти разрешения

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

кто может мне помочь, пожалуйста,

+0

В последнем андроиде версии мы можем иметь возможность ограничить права Есть два вида разрешений нормальный и безопасный сервис менеджера Откуда приходит под надежным разрешения вы должны проверить это разрешено Acces разрешения – dileep

ответ

0

Как подсказка предлагает: Пользователь может отказать в разрешении. В этом случае этот вызов вызовет ошибку ...

В настоящий момент андроид просит пользователя принять все разрешения, которые приложение запрашивает в манифесте при установке. В предстоящем выпуске M андроид переключится на iOS-стиль разрешений с «по необходимости».

Вызовите этот метод, чтобы узнать, предоставлено ли разрешение или нет. Если нет, вам нужно справиться с этой ситуацией.

context.checkCallingPermission(permission) 

Объявление разрешения в манифесте означает, что вы запрашиваете разрешение. В новых выпусках он не гарантирует, что пользователь предоставит вам это разрешение.

В старых версиях пользователь должен принять все или отклонить все разрешения

+0

Итак, как вы сказали, это означает, что программа будет работать правильно и не будет работать, если пользователь не разрешил приложению использовать Gps или сеть. но приложение остановилось, когда я запустил его на эмуляторе, где включен GPS-доступ. – Saleh923

+0

@ Saleh923 Да, если пользователь откажет в разрешении, приложение может потерпеть крах. Пожалуйста, проверьте, в чем причина сбоя на эмуляторе ... возможно, это связано с другой проблемой! Кстати, проверьте, может ли ваш эмулятор эмулировать GPS/сеть. Лучше всего тестировать на устройстве –

0

Это не ошибка на самом деле, а хедз-ап по Линту, и это может вызвать проблему!

Надеюсь, что вы знаете о новой модели разрешения, представленной в Android 6.0 (Marshmallow), через которую пользователь может не разрешать использовать GPS или сеть или что-то еще, и поэтому это может вызвать проблему в вашем приложении!

Теперь, согласно анализу lint, перед реализацией определенной функциональности вы должны проверить, доступно ли разрешение для того же самого или нет!

+0

Так как вы сказали, что пользователь означает, что программа будет работать правильно и не будет работать, если пользователь не разрешил приложению использовать Gps или сеть. но приложение остановилось, когда я запустил его на эмуляторе, где включен GPS-доступ. – Saleh923

0

С SDK 23, вы должны/Необходимо проверить разрешение использования checkSelfPermission

http://developer.android.com/reference/android/support/v4/content/ContextCompat.html

, например

if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED 
     && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
    return; 
} 
0

Это условие позволяет пользователю разрешить доступ к разрешению на чтение местоположения

if(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED||checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER,meter,mill,new locationlist(this)); 
} 
Смежные вопросы