其他分享
首页 > 其他分享> > android – 要求用户启用位置

android – 要求用户启用位置

作者:互联网

如何提示用户打开位置?

应用程序应该使用用户的当前位置过滤位置列表.如果用户关闭了位置服务,应用程序应提示用户要求打开位置.

例如Trip Advisor应用程序执行此操作:

enter image description hereenter image description hereenter image description hereenter image description here

(不确定我是否可以在这里发布其他应用程序截图,但如果我不应该这样做,请说出来.并为全尺寸图片道歉,试图让它们变小,但是不喜欢它…… )

在第一张图片中,您可以看到我已关闭位置服务.打开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