Как получить сообщение о местоположении только при открытии определенного действия?

В моем файле 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);

Вероятно, вы поместили код, который запрашивает разрешение, в MainActivity.onCreate(). И оттуда вы запускаете LoginActivity. Так что вам лучше использовать LoginActivity как «основной» и «лаунчер» в манифесте. В LoginActivity, если пользователь уже вошел в систему, запустите MainActivity

Christos Themelis 08.03.2019 15:00

@ChristosThemelis Спасибо за ваш комментарий, но даже если MainActivity пусто, сообщение все равно отображается. Я уже пробовал ваше решение, но оно мне не помогает, потому что каждый раз, когда я открываю приложение, открывается LoginActivity, затем пропускается, потому что пользователь вошел в систему, и только после этого открывается MainActivity.

Johans Bormman 08.03.2019 15:05

Какая версия Android вашего устройства?

matdev 08.03.2019 15:11

@matdev Я использую Android 7.0

Johans Bormman 08.03.2019 15:14

дайте нам код, чтобы понять. Как и где вы вызываете запрос на разрешение?

Christos Themelis 08.03.2019 16:00

@ChristosThemelis Только что отредактировал мой вопрос. Пожалуйста, посмотрите код, который я использую.

Johans Bormman 08.03.2019 16:08

Ваше редактирование не содержит части кода, в которой вы запрашиваете разрешения на местоположение у пользователя. В своем вопросе вы говорите о разрешении, а не о запросе местоположения. Наконец, что вы хотите, когда запускается MainActivity? Включить запрос местоположения или запросить разрешения у пользователя?

Christos Themelis 08.03.2019 16:19

@ChristosThemelis Речь идет о запросе местоположения, извините за неправильное понимание. Я хочу, чтобы запрос местоположения выполнялся только при запуске MainActivity и нет при запуске LoginActivity.

Johans Bormman 08.03.2019 16:23

@ChristosThemelis Это вообще возможно?

Johans Bormman 08.03.2019 16:30

@Йоханс Бормман, да. Проблема в логике вашего приложения. Является ли ваш проект общедоступным github или чем-то еще, чтобы я мог его проверить?

Christos Themelis 10.03.2019 14:43
0
10
46
0

Другие вопросы по теме