Das Problem, dem ich gegenüberstehe, ist die Erteilung von GPS-Berechtigungen für die Anwendung über den Dienst, den ich schreibe. Ich habe versucht, ein Beispiel zu finden, um dies zu erreichen, und Beispiele zeigen, einen gpslocation Finder in Activity schreiben, aber in diesem Fall möchte ich dies im Dienst implementieren.requestPermissions() für GPS innerhalb eines Dienstes. Fehler: "Der Standortanbieter benötigt die Berechtigung ACCESS_FINE_LOCATION."
Der Service-Code lautet wie folgt:
public class TravelService extends Service{
private LocationManager locManager;
private LocationListener locListener;
@Override
public void onCreate() {
super.onCreate();
locManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
locManager.requestLocationUpdates("gps", 5000, 100, locListener);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
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;
}
locManager.requestLocationUpdates("gps", 5000, 100, locListener);
Toast.makeText(this, "Service Created", Toast.LENGTH_LONG).show();
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
locManager.requestLocationUpdates("gps", 5000, 100, locListener);
Toast.makeText(this,"Service Started",Toast.LENGTH_LONG).show();
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this,"Service destroyed",Toast.LENGTH_LONG).show();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Hier mein Code in der Manifest.xml ist:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.param.dateandtime">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Entry for LoginActivity.class -->
<activity android:name=".LoginActivity"
android:label="@string/app_name"></activity>
<activity android:name=".Finish"
android:label="@string/app_name"></activity>
<service android:name=".TravelService"
android:exported="false"/>
</application>
</manifest>
Hier habe ich das Fehlerprotokoll angeschlossen haben, zeigt die Fehler, die ich mit Blick auf bin . Ich kann den Fehler als "Location Provider erfordert ACCESS_FINE_LOCATION Erlaubnis."
Stack-Überlauf ist für die Programmierung von Fragen. Was ist deine Frage? – CommonsWare
poste dein Manifest –
Ich postete meinen manifest.xml Code –