Я собираюсь сделать вспомогательное прикосновение для приложения Android, такого как приложение ios, поэтому я хочу добавить функцию включения GPS для этого. Я хочу включать и выключать GPS, щелкнув изображение, когда я нажимаю на него. Он переходит в настройки, и оттуда вы можете включать и выключать местоположение вашего телефона, но я хочу, чтобы это не устанавливалось, когда я щелкните местоположение включено и щелкните другое, чтобы отключить местоположение.
final ImageView locationOn = view.findViewById(R.id.location);
final ImageView locationOff = view.findViewById(R.id.locationOff);
locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
GpsStatus = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (GpsStatus) {
locationOn.setVisibility(View.INVISIBLE);
locationOff.setVisibility(View.VISIBLE);
}
else{
locationOn.setVisibility(View.VISIBLE);
locationOff.setVisibility(View.INVISIBLE);
}
locationOn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
locationOn.setVisibility(View.INVISIBLE);
locationOff.setVisibility(View.VISIBLE);
}
});
locationOff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
locationOn.setVisibility(View.VISIBLE);
locationOff.setVisibility(View.INVISIBLE);
}
});
когда я нажимаю на него. Он переходит в настройки, и оттуда вы можете включать и выключать местоположение своего телефона, но я хочу, чтобы это не происходило в настройках, когда я нажимаю местоположение, и нажимаю другое, чтобы отключить местоположение.
Это невозможно, потому что разрешение на это позволит приложению включить его без уведомления пользователя и создать огромную уязвимость для конфиденциальности пользователя.
Нет, это не невозможно и неуместно. Вы не можете просто управлять телефоном пользователя без его полномочий.
Из игрового магазина:
«Cerberus автоматически включает GPS, если он выключен, когда вы пытаетесь локализовать свое устройство (только на Android < 2.3.3), и вы можете защитить его от несанкционированного удаления — больше информации в конфигурации приложения».
Вы можете сделать что-то вроде этого:
startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
Используя намерения, если версия API не является последней
Включить GPS
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", true);
sendBroadcast(intent);
Отключить GPS
Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", false);
sendBroadcast(intent);
это не сработает. Вы получите сообщение об ошибке «java.lang.SecurityException: Permission Denial: не разрешено отправлять широковещательную рассылку android.location.GPS_ENABLED_CHANGE» при попытке отправить широковещательную рассылку. в устройстве Oreo, которое я тестировал.
Сторонние приложения не могут включать или отключать геолокацию. Единственное, что вы можете сделать, это показать системный диалог, чтобы включить / отключить его.