|
|
@ -0,0 +1,121 @@ |
|
|
|
using GMCabsDriverAssistant.Services; |
|
|
|
using GMCabsDriverAssistant.Utils; |
|
|
|
|
|
|
|
namespace GMCabsDriverAssistantSolution.Views; |
|
|
|
|
|
|
|
public partial class PermissionCheckPage : ContentPage |
|
|
|
{ |
|
|
|
bool isFirstTime = true; |
|
|
|
|
|
|
|
public PermissionCheckPage() |
|
|
|
{ |
|
|
|
InitializeComponent(); |
|
|
|
} |
|
|
|
|
|
|
|
[Obsolete] |
|
|
|
protected async override void OnAppearing() |
|
|
|
{ |
|
|
|
base.OnAppearing(); |
|
|
|
isFirstTime = Preferences.Get("isFirstTime", true); |
|
|
|
var status = await Permissions.CheckStatusAsync<Permissions.LocationAlways>(); |
|
|
|
if (status == PermissionStatus.Granted) |
|
|
|
{ |
|
|
|
Preferences.Set(SecureStorageData.IsLocationPermitted, true); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
Preferences.Set(SecureStorageData.IsLocationPermitted, false); |
|
|
|
} |
|
|
|
if (Device.RuntimePlatform == Device.Android) |
|
|
|
{ |
|
|
|
if (DependencyService.Get<IBatteryInfo>().CheckIsIgnoringBatteryOptimizations()) |
|
|
|
{ |
|
|
|
Preferences.Set(SecureStorageData.IsBatteryOptimizationDisabled, true); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
Preferences.Set(SecureStorageData.IsBatteryOptimizationDisabled, false); |
|
|
|
} |
|
|
|
} |
|
|
|
if ((Preferences.Get(SecureStorageData.IsLocationPermitted, false)) || !string.IsNullOrWhiteSpace(Preferences.Get(SecureStorageData.Token, ""))) |
|
|
|
{ |
|
|
|
if (Device.RuntimePlatform == Device.Android && Preferences.Get(SecureStorageData.IsBatteryOptimizationDisabled, false)) |
|
|
|
{ |
|
|
|
await ShowSplashScreen(); |
|
|
|
} |
|
|
|
else if (Device.RuntimePlatform == Device.iOS) |
|
|
|
{ |
|
|
|
await ShowSplashScreen(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void OnPermissionCheckClicked(object sender, EventArgs e) |
|
|
|
{ |
|
|
|
//Navigation.ShowPopup(new AppPermissiontSetDialogPage(this, Constant.FROM_PERMISSION_PAGE));
|
|
|
|
/*if (!isFirstTime) |
|
|
|
{ |
|
|
|
Navigation.ShowPopup(new LocationNotSetDialogPage(this)); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
Preferences.Set("isFirstTime", false); |
|
|
|
var status = await OnLocationCheck(); |
|
|
|
if (status == PermissionStatus.Granted) |
|
|
|
{ |
|
|
|
await ShowSplashScreen(); |
|
|
|
} |
|
|
|
}*/ |
|
|
|
} |
|
|
|
public async Task<PermissionStatus> OnLocationCheck() |
|
|
|
{ |
|
|
|
|
|
|
|
var status = await Permissions.CheckStatusAsync<Permissions.LocationAlways>(); |
|
|
|
if (status == PermissionStatus.Granted) |
|
|
|
return status; |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
if (DeviceInfo.Platform == DevicePlatform.Android && int.Parse(DeviceInfo.VersionString) >= 12) |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
bool answer = await DisplayAlert("Location", "Please allow your location permission from setting Page and Select 'All the time'", "YES", "NO"); |
|
|
|
if (answer) |
|
|
|
AppInfo.ShowSettingsUI(); |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
if (DeviceInfo.Platform == DevicePlatform.iOS && status == PermissionStatus.Denied) |
|
|
|
{ |
|
|
|
// Prompt the user to turn on in settings
|
|
|
|
// On iOS once a permission has been denied it may not be requested again from the application
|
|
|
|
// Navigation.ShowPopup(new LocationNotSetDialogPage(this));
|
|
|
|
return status; |
|
|
|
} |
|
|
|
status = await Permissions.RequestAsync<Permissions.LocationAlways>(); |
|
|
|
if (status == PermissionStatus.Granted) |
|
|
|
{ |
|
|
|
return status; |
|
|
|
} |
|
|
|
if (!Permissions.ShouldShowRationale<Permissions.LocationAlways>()) |
|
|
|
{ |
|
|
|
bool answer = await DisplayAlert("Location", "Please allow your location permission from setting Page", "YES", "NO"); |
|
|
|
if (answer) |
|
|
|
AppInfo.ShowSettingsUI(); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
|
|
|
|
} |
|
|
|
return status; |
|
|
|
} |
|
|
|
private async Task ShowSplashScreen() |
|
|
|
{ |
|
|
|
await Shell.Current.GoToAsync($"//{nameof(SplashPage)}"); |
|
|
|
} |
|
|
|
} |