2016-01-20 10 views
0

Я пытаюсь написать услугу, чтобы найти пользователя по его местоположению GP в Android. Я за это услугу. Но alwasy, когда я пытаюсь запустить сервис, появляется ошибкаОшибка при попытке запустить службу на Android

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? появляется. Я уже искал эту проблему на Google и добавил follwoing строки в мой исходный код:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

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

public class MainActivity extends Activity{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.start); 

     //GPs Standort bestimmung starten 
     Intent intent; 
     intent = new Intent(this, Gps_Service.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startService(intent); 

     initButtons(); 
    } 
} 

"Gps_service.java":

public class Gps_Service extends Service implements LocationListener{ 

    private double längengrad = 0.0, breitengrad = 0.0; 
    LocationManager locationManager; 
    Address adresse; 
    String straße, Ort, Land; 

    @Override 
    public void onCreate(){ 
     super.onCreate(); 
     locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 10000, 100, this); 
    } 

    @Override 
    public void onDestroy(){ 
     super.onDestroy(); 
     locationManager.removeUpdates(this); 
    } 

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

    @Override 
    public void onLocationChanged(Location location) { 
     längengrad = location.getLongitude(); 
     breitengrad = location.getLatitude(); 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 

    } 
    @Override 
    public void onProviderEnabled(String provider) {} 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) {} 
} 
+0

Основываясь на сообщении об ошибке упоминании 'startActivity' Я думаю, ваша ошибка может происходить в другом месте в коде, не отображается. –

+0

Вы уверены, что ошибка вызвана запуском службы? Не могли бы вы показать весь стек исключения? –

ответ

0

Вместо того, чтобы запустить службу извлечь местоположение пользователя с помощью GPS, с помощью компании Google Fused Location API.

Предоставленная ссылка содержит подробное руководство о том, как ее реализовать и является гораздо более надежной и точной при получении данных о местоположении.

Не забудьте эту Gradle зависимости, а также:

compile 'com.google.android.gms:play-services-location:8.4.0'