хочу отключить настройку GPS через мое приложение - PullRequest
0 голосов
/ 20 марта 2012

Я новичок в программировании на Android, ваша помощь очень нужна.

Я попытался отключить GPS с помощью кода Settings.Secure.setLocationProviderEnabled (getContentResolver (), LocationManager.GPS_PROVIDER, false);

также установил разрешения в файле AndroidManifest.xml как

.,,

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

, но когда я запускаю приложение, оно говорит: «Не предоставление разрешения android.permission.WRITE_SECURE_SETTINGS на пакет .....

, и мое приложение вылетает, говоря

ava.lang.SecurityException: Отказ в разрешении: запись в безопасные настройки требует android.permission.WRITE_SECURE_SETTINGS

спасибо за помощь заранее:)

Ответы [ 3 ]

0 голосов
/ 20 марта 2012

Если вы пытаетесь на самом деле отключить чип GPS, то я понимаю, что система Android это не возможно. Вы должны попросить пользователя включить или отключить GPS через меню настроек.

См. Этот вопрос: Как я могу получить страшное разрешение WRITE_SECURE_SETTINGS для моего приложения для Android?

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

0 голосов
/ 20 марта 2012

Я полагаю, ваши пользователи жалуются, что ваше приложение может видеть их местоположение

Чтобы не показывать это сообщение при установке приложения, необходимо удалить:

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

Вы также можете попробовать использовать getLastKnownLocation для экономии заряда батареи.Он не включает GPS и может использовать данные ячейки сети (COARSE_LOCATION).

public Location getLocation() {
 if (contextReference == null) {
   return null;
 } 

 Context context = contextReference.get();
 if (context == null) {
   return null;
 }

 Location location = null;

 if (context
    .checkCallingOrSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
  LocationManager lm = (LocationManager) context
      .getSystemService(Context.LOCATION_SERVICE);
  location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} else if (context
    .checkCallingOrSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
  LocationManager lm = (LocationManager) context
      .getSystemService(Context.LOCATION_SERVICE);
  location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}
return location;

}

0 голосов
/ 20 марта 2012

Вы можете запустить GPS с помощью

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    LocationListener locationListener = new CTLocationListener();
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 1.0f, locationListener);

Чтобы остановить провайдера GPS, используйте

 locationManager.removeUpdates(locationListener);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...