Как передать разрешения на Broadcastreceiver?

В MainActivity мое приложение получает разрешение ACCESS_FINE_LOCATION, Затем он устанавливает будильник

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 101, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 5000, 5000, pendingIntent);

Когда тогда получатель запущен, он не видит, что разрешение было дано:

public class AlarmReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    Location location;
    if (context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(context, "Granted", Toast.LENGTH_SHORT).show();
        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    }else{
        Toast.makeText(context, "Not Granted!", Toast.LENGTH_SHORT).show();
        return;
    }
}
}

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

Заранее спасибо за ваши усилия.

1 ответ

if(context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)

Эта строка означает, что разрешение не granted, Вам нужно попросить разрешения, вы пишете неправильно condition, Ваше состояние должно выглядеть так

if (context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(context, "Not Granted!", Toast.LENGTH_SHORT).show();
        return;
    }else{

        Toast.makeText(context, "Granted", Toast.LENGTH_SHORT).show();
        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    }
Другие вопросы по тегам