В моем файле AndroidManifest.xml у меня есть два действия:
<activity android:name = ".activities.LoginActivity"/>
<activity android:name = ".activities.MainActivity">
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Я также установил:
<uses-permission android:name = "android.permission.ACCESS_FINE_LOCATION"/>
Чтобы иметь возможность получить местоположение пользователя. Согласно логике моего приложения, если я вошел в систему, меня перенаправляют непосредственно на MainActivity, в противном случае — на LoginActivity. Первый раз, когда я открываю приложение, открывается LoginActivity. Даже если логика для получения местоположения пользователя присутствует Только в MainActivity, у меня запрашивается разрешение на размещение также при открытии LoginActivity.
To continue, turn on device location, which uses Google's location service
Что мне делать, чтобы я мог получать это сообщение только при открытии MainActivity?
Редактировать: Это код, который я использую:
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(new LocationRequest().setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY));
builder.setAlwaysShow(true);
locationSettingsRequest = builder.build();
settingsClient = LocationServices.getSettingsClient(MainActivity.this);
locationSettingsSuccessListener = locationSettingsResponse -> {
Log.d(TAG, "Location enabled");
};
В onStart():
settingsClient.checkLocationSettings(locationSettingsRequest)
.addOnSuccessListener(locationSettingsSuccessListener);
@ChristosThemelis Спасибо за ваш комментарий, но даже если MainActivity пусто, сообщение все равно отображается. Я уже пробовал ваше решение, но оно мне не помогает, потому что каждый раз, когда я открываю приложение, открывается LoginActivity, затем пропускается, потому что пользователь вошел в систему, и только после этого открывается MainActivity.
Какая версия Android вашего устройства?
@matdev Я использую Android 7.0
дайте нам код, чтобы понять. Как и где вы вызываете запрос на разрешение?
@ChristosThemelis Только что отредактировал мой вопрос. Пожалуйста, посмотрите код, который я использую.
Ваше редактирование не содержит части кода, в которой вы запрашиваете разрешения на местоположение у пользователя. В своем вопросе вы говорите о разрешении, а не о запросе местоположения. Наконец, что вы хотите, когда запускается MainActivity? Включить запрос местоположения или запросить разрешения у пользователя?
@ChristosThemelis Речь идет о запросе местоположения, извините за неправильное понимание. Я хочу, чтобы запрос местоположения выполнялся только при запуске MainActivity и нет при запуске LoginActivity.
@ChristosThemelis Это вообще возможно?
@Йоханс Бормман, да. Проблема в логике вашего приложения. Является ли ваш проект общедоступным github или чем-то еще, чтобы я мог его проверить?
Вероятно, вы поместили код, который запрашивает разрешение, в MainActivity.onCreate(). И оттуда вы запускаете LoginActivity. Так что вам лучше использовать LoginActivity как «основной» и «лаунчер» в манифесте. В LoginActivity, если пользователь уже вошел в систему, запустите MainActivity