android – 要求用户启用位置
作者:互联网
如何提示用户打开位置?
应用程序应该使用用户的当前位置过滤位置列表.如果用户关闭了位置服务,应用程序应提示用户要求打开位置.
例如Trip Advisor应用程序执行此操作:
(不确定我是否可以在这里发布其他应用程序截图,但如果我不应该这样做,请说出来.并为全尺寸图片道歉,试图让它们变小,但是不喜欢它…… )
在第一张图片中,您可以看到我已关闭位置服务.打开Trip Advisor应用程序,然后点击“立刻接近我”选项后,我会看到第二张图片,在那里我被要求启用位置服务.点击按钮后,会出现一个对话框,以便我可以允许或禁止打开位置服务.如果点击“确定”,则会在设备上启用“位置”服务,然后应用程序会使用该服务.
我怎样才能做到这一点?
解决方法:
找到了我要求的解决方案.
要求
Nuget Xamarin.GooglePlayServices.Location
码
Int64
interval = 1000 * 60 * 1,
fastestInterval = 1000 * 50;
try {
GoogleApiClient
googleApiClient = new GoogleApiClient.Builder( this )
.AddApi( LocationServices.API )
.Build();
googleApiClient.Connect();
LocationRequest
locationRequest = LocationRequest.Create()
.SetPriority( LocationRequest.PriorityBalancedPowerAccuracy )
.SetInterval( interval )
.SetFastestInterval( fastestInterval );
LocationSettingsRequest.Builder
locationSettingsRequestBuilder = new LocationSettingsRequest.Builder()
.AddLocationRequest( locationRequest );
locationSettingsRequestBuilder.SetAlwaysShow( false );
LocationSettingsResult
locationSettingsResult = await LocationServices.SettingsApi.CheckLocationSettingsAsync(
googleApiClient, locationSettingsRequestBuilder.Build() );
if( locationSettingsResult.Status.StatusCode == LocationSettingsStatusCodes.ResolutionRequired ) {
locationSettingsResult.Status.StartResolutionForResult( this, 0 );
}
} catch( Exception exception ) {
// Log exception
}
使用此代码,如果locationSettingsResult.Status.StatusCode是LocationSettingsStatusCodes.ResolutionRequired(6),则意味着 – 可能 – 该位置已关闭,尽管我发现一种情况是它在设备上没有返回值关闭了选项.打开和关闭后,它工作,可能是设备上的错误,或不.
标签:android,android-permissions,xamarin,xamarin-android,android-location 来源: https://codeday.me/bug/20191001/1837953.html