Как передать разрешения на 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);
}