2016-08-11 3 views
0

У меня есть приложение для Android для просмотра любых местоположений филиалов, но когда приложение закрыто, мне нужно отправить местоположение в качестве службы. Ex. Whatsapp, сообщения принимаются, когда приложение закрыто.Ошибка при запуске местоположения в качестве службы в приложении для Android

я создать класс обслуживания, но когда я называю это приложение останавливается, но этот код прекрасно работает на деятельности:

public class servicoEnviaLocalizacao extends Service { 

private Timer timer = new Timer(); 
LocationManager lm; 
LocationListener ll; 

public servicoEnviaLocalizacao() { 
    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    ll = new localizacao_background(); 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 
     // ActivityCompat#requestPermissions 
     // here to request the missing permissions, and then overriding 
     // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
     //           int[] grantResults) 
     // to handle the case where the user grants the permission. See the documentation 
     // for ActivityCompat#requestPermissions for more details. 
     return; 
    } 
    lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2000, 10, (android.location.LocationListener) ll); 
} 



@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 


    return START_NOT_STICKY; 
} 

}

Logcat:

E/AndroidRuntime: FATAL ИСКЛЮЧЕНИЕ: main Процесс: br.com.testtotal, PID: 2390 java.lang.RuntimeException: невозможно создать экземпляр службы br.com.testtotal.servicos.servicoEnviaLocalizacao: java.lang.NullPo interException на android.app.ActivityThread.handleCreateService (ActivityThread.java:2556) на android.app.ActivityThread.access $ 1800 (ActivityThread.java:135) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java: 1278) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:136) на android.app.ActivityThread.main (ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative (родной метод) at java.lang.reflect.Method.invoke (Method.java:515) at com.android.internal.os.ZygoteInit $ Metho dAndArgsCaller.run (ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:595) at dalvik.system.NativeStart.main (родной метод) Причиненный: java.lang .NullPointerException в android.content.ContextWrapper.getSystemService (ContextWrapper.java:540) в br.com.testtotal.servicos.servicoEnviaLocalizacao. (servicoEnviaLocalizacao.java:30) на java.lang.Class.newInstanceImpl (Родной метод) на java.lang.Class.newInstance (класс.java:1208) на android.app.ActivityThread.handleCreateService (ActivityThread.java:2553) на android .app.ActivityThread.access $ 1800 (ActivityThread.java:135) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1278) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:136) at android.app.ActivityThread.main (ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative (собственный метод) at java.lang .reflect.Method.invoke (Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main (ZygoteInit .java: 595) at dalvik.system.NativeStart.main (Native Method)

+1

Вам необходимо опубликовать исключение и stacktrace из logcat. –

ответ

0

В службе вы никогда не должны создавать конструктор, чтобы переопределить значение по умолчанию, поскольку сам контекст и служба запускаются в этой части класса, поэтому он должен всегда остается значением по умолчанию. Вместо этого переопределите метод onCreate(). Это будет вызываться всякий раз, когда Service создается после того, как все еще уже инициализировано.