我正在尝试编写一项服务,通过它在Android中的GP位置来定位用户。我为此提供了一项服务。但是,当我尝试启动服务错误时,alwasy
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上搜索了这个问题,并将以下行添加到我的源代码中:
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 :(得分:0)
使用Google的Fused Location API,而不是运行服务来通过GPS检索用户的位置。
提供的链接提供了有关如何实施该链接的详细指南,并且在接收位置数据方面更加可靠和准确。
也不要忘记这个gradle依赖:
compile 'com.google.android.gms:play-services-location:8.4.0'