Browse Source

LocationService threading issues fixed on Android.

pull/521/head
David Britch 7 years ago
parent
commit
6e7a0ace16
4 changed files with 6 additions and 8 deletions
  1. +0
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs
  2. +1
    -4
      src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Activities/MainActivity.cs
  3. +2
    -3
      src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Services/LocationServiceImplementation.cs
  4. +3
    -0
      src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Services/PermissionsService.cs

+ 0
- 1
src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs View File

@ -79,7 +79,6 @@ namespace eShopOnContainers
try try
{ {
var position = await locator.GetPositionAsync(); var position = await locator.GetPositionAsync();
_settingsService.Latitude = position.Latitude.ToString(); _settingsService.Latitude = position.Latitude.ToString();
_settingsService.Longitude = position.Longitude.ToString(); _settingsService.Longitude = position.Longitude.ToString();
} }


+ 1
- 4
src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Activities/MainActivity.cs View File

@ -10,7 +10,6 @@ using FFImageLoading.Forms.Droid;
using System; using System;
using Xamarin.Forms.Platform.Android; using Xamarin.Forms.Platform.Android;
using eShopOnContainers.Droid.Services; using eShopOnContainers.Droid.Services;
using eShopOnContainers.Core.Services.Permissions;
namespace eShopOnContainers.Droid.Activities namespace eShopOnContainers.Droid.Activities
{ {
@ -21,8 +20,6 @@ namespace eShopOnContainers.Droid.Activities
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : FormsAppCompatActivity public class MainActivity : FormsAppCompatActivity
{ {
public static IPermissionsService PermissionsService = new PermissionsService();
protected override void OnCreate(Bundle bundle) protected override void OnCreate(Bundle bundle)
{ {
FormsAppCompatActivity.ToolbarResource = Resource.Layout.Toolbar; FormsAppCompatActivity.ToolbarResource = Resource.Layout.Toolbar;
@ -60,7 +57,7 @@ namespace eShopOnContainers.Droid.Activities
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{ {
base.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
((PermissionsService)PermissionsService).OnRequestPermissionResult(requestCode, permissions, grantResults);
((PermissionsService)PermissionsService.Current.Value).OnRequestPermissionResult(requestCode, permissions, grantResults);
} }
} }
} }


+ 2
- 3
src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Services/LocationServiceImplementation.cs View File

@ -5,7 +5,6 @@ using Android.OS;
using eShopOnContainers.Core.Models.Location; using eShopOnContainers.Core.Models.Location;
using eShopOnContainers.Core.Models.Permissions; using eShopOnContainers.Core.Models.Permissions;
using eShopOnContainers.Core.Services.Location; using eShopOnContainers.Core.Services.Location;
using eShopOnContainers.Droid.Activities;
using eShopOnContainers.Droid.Services; using eShopOnContainers.Droid.Services;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -45,12 +44,12 @@ namespace eShopOnContainers.Droid.Services
async Task<bool> CheckPermissionsAsync() async Task<bool> CheckPermissionsAsync()
{ {
var status = await MainActivity.PermissionsService.CheckPermissionStatusAsync(Permission.Location);
var status = await PermissionsService.Current.Value.CheckPermissionStatusAsync(Permission.Location);
if (status != PermissionStatus.Granted) if (status != PermissionStatus.Granted)
{ {
Console.WriteLine("Currently do not have Location permissions, requesting permissions."); Console.WriteLine("Currently do not have Location permissions, requesting permissions.");
var request = await MainActivity.PermissionsService.RequestPermissionsAsync(Permission.Location);
var request = await PermissionsService.Current.Value.RequestPermissionsAsync(Permission.Location);
if (request[Permission.Location] != PermissionStatus.Granted) if (request[Permission.Location] != PermissionStatus.Granted)
{ {
Console.WriteLine("Location permission denied."); Console.WriteLine("Location permission denied.");


+ 3
- 0
src/Mobile/eShopOnContainers/eShopOnContainers.Droid/Services/PermissionsService.cs View File

@ -8,6 +8,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace eShopOnContainers.Droid.Services namespace eShopOnContainers.Droid.Services
@ -20,6 +21,8 @@ namespace eShopOnContainers.Droid.Services
Dictionary<Permission, PermissionStatus> _results; Dictionary<Permission, PermissionStatus> _results;
IList<string> _requestedPermissions; IList<string> _requestedPermissions;
public static Lazy<IPermissionsService> Current = new Lazy<IPermissionsService>(() => new PermissionsService(), LazyThreadSafetyMode.PublicationOnly);
#region Internal Implementation #region Internal Implementation
List<string> GetManifestNames(Permission permission) List<string> GetManifestNames(Permission permission)


Loading…
Cancel
Save