0
I’m trying to get a project up and running open-source found on the internet but I’m having some problems trying to implement the permissions for Location now required by compileSdkVersion 23 and buildToolsVersion "23.0.1" that I want to use.
The code I’m using can be found here: https://github.com/vyshane/rex-weather
/**
* Implement an Rx-style location service by wrapping the Android LocationManager and providing
* the location result as an Observable.
*/
public class LocationService {
private final LocationManager mLocationManager;
public LocationService(LocationManager locationManager) {
mLocationManager = locationManager;
}
public Observable<Location> getLocation() {
return Observable.create(new Observable.OnSubscribe<Location>() {
@Override
public void call(final Subscriber<? super Location> subscriber) {
final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(final Location location) {
subscriber.onNext(location);
subscriber.onCompleted();
Looper.myLooper().quit();
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
}
};
final Criteria locationCriteria = new Criteria();
locationCriteria.setAccuracy(Criteria.ACCURACY_COARSE);
locationCriteria.setPowerRequirement(Criteria.POWER_LOW);
final String locationProvider = mLocationManager
.getBestProvider(locationCriteria, true);
Looper.prepare();
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;
}
mLocationManager.requestSingleUpdate(locationProvider,
locationListener, Looper.myLooper());
Looper.loop();
}
});
}
}
My problem is in the permission 'this', which has as error the following:
checkSelfPermission(android.content.Context,String)in Contextcompat cannot be Applied
to (Anonymous Rx.Observable.Onsubscribe,String)
I don’t know how to make this work.
I used the automatic add permission check and gave the following:
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;
}
Only it gives error in "this" and I do not know how to solve it, and the resulting error is:
checkSelfPermission(android.content.Context,String)in Contextcompat cannot be Applied to(Anonymous Rx.Observable.Onsubscribe,)