我如何在ViewModel中获得位置权限



我正在尝试使用api获取天气信息。

使用天气api,我需要位置信息。

所以我必须使用位置管理器

但在这个项目中,我使用MVVM设计模式。

所以我不能在ViewModel中获得Location Manager。我也不能在viewmodel中请求权限。

我如何在视图模型中获得位置管理器以及如何在ViewModel中使用onRequestPermissionsResult() ?

和请求权限在视图模型和使用onRequestPermissionsResult()在ViewModel是正确的方式?

这是我的代码。

public class MAgencyViewModel extends ViewModel{
private final String TAG = "MAgencyViewModel";
//이 클래스에서는 Model과 통신하여서 날씨 정보를 받아온다.
private MutableLiveData<ShortWeather> sw;
private MAgencyRepo maRepo;
private LocationManager lm;//핸드폰에 있는 gps관련 기기와 상호작용하기 위해서
private GpsTransfer gpt;
private GeoInfo gi;
//여기서 이제 위치정보를 가지고 날씨정보 API를 호출하는 부분
public void init(GeoInfo gi){
if(sw != null){
return;
}
//I want to get Location information in here
maRepo = MAgencyRepo.getInStance();
sw = maRepo.getWeather(gi); // this part is calling a weather api
Log.i(TAG,"API Connection finish");
}
public LiveData<ShortWeather> getWeather(){
return sw;
}
}

我会尽量使ViewModel尽可能独立于平台,特别是Context自由。

所以在这种情况下,我会在视图层(Activity, Fragment)上请求这个,因为获得LocationManager可以用getSystemService()完成,这是Context的函数。然后将事件(如onRequestPermissionsResult())委托给ViewModel

最新更新