Задать вопрос
@bart12k

Как правильно запросить разрешения в сервисе?

Есть код определения координат по сети:
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            //  Toast toast = Toast.makeText(this, "Permission failed", Toast.LENGTH_SHORT);
            //   toast.show();
            return;
        } else {

            //   Toast toast = Toast.makeText(this, "is work", Toast.LENGTH_SHORT);
            //    toast.show();
        }

        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        Location location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);


// GPS_PROVIDER отправить GPS
        lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new MyListener());


Если он в activity всё хорошо, всё работает. Но стоит его перенести в сервис MyService, он начинает ругаться при запросе разрешения... Может быть я что-то не так делаю?
Ругается так:
Process: com.example.gps, PID: 10673
    java.lang.RuntimeException: Unable to instantiate service com.example.gps.MyService: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
        at android.app.ActivityThread.handleCreateService(ActivityThread.java:3925)
        at android.app.ActivityThread.access$1500(ActivityThread.java:220)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1868)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7319)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
        at android.content.ContextWrapper.getSystemService(ContextWrapper.java:752)
  • Вопрос задан
  • 160 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
Контекста нет.
Getcontext().getservice

Но я лично не люблю, когда у меня на телефоне , что то висит в фоне с геолокацией.
Сношу такие условно нужные или ручками прибиваю сервисы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы