protected override void OnCreate(Bundle savedInstanceState) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; LocalNotificationsImplementation.NotificationIconId = Resource.Drawable.app_logo; App.ScreenWidth = (Resources.DisplayMetrics.WidthPixels / Resources.DisplayMetrics.Density); App.ScreenHeight = (Resources.DisplayMetrics.HeightPixels / Resources.DisplayMetrics.Density); // This event fires when the ServiceConnection lets the client (our App class) know that // the Service is connected. We use this event to start updating the UI with location // updates from the Service AppAndroid.Current.LocationServiceConnected += (sender, e) => { Log.Debug(TAG, "ServiceConnected Event Raised"); // notifies us of location changes from the system AppAndroid.Current.LocationService.LocationChanged += HandleLocationChanged; //notifies us of user changes to the location provider (ie the user disables or enables GPS) AppAndroid.Current.LocationService.ProviderDisabled += HandleProviderDisabled; AppAndroid.Current.LocationService.ProviderEnabled += HandleProviderEnabled; // notifies us of the changing status of a provider (ie GPS no longer available) AppAndroid.Current.LocationService.StatusChanged += HandleStatusChanged; }; base.OnCreate(savedInstanceState); UserDialogs.Init(this); CrossCurrentActivity.Current.Init(this, savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); LoadApplication(new App()); //Start the location service: if (ContextCompat.CheckSelfPermission(this, Manifest.Permission.AccessFineLocation) == (int)Permission.Granted) { Log.Debug(TAG, "User already has granted permission."); AppAndroid.StartLocationService(); } else { Log.Debug(TAG, "Have to request permission from the user. "); RequestLocationPermission(); } // Check if the Camera permission is already available. if (ContextCompat.CheckSelfPermission(this, Manifest.Permission.Camera) != (int)Permission.Granted) { // Camera permission has not been granted RequestCameraPermission(); } else { // Camera permissions is already available, show the camera preview. Log.Info(TAG, "CAMERA permission has already been granted. Displaying camera preview."); } }
//public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) //{ // var layout = FindViewById(Android.Resource.Id.Content); // if (requestCode == RC_REQUEST_LOCATION_PERMISSION) // { // if (grantResults.Length == 1 && grantResults[0] == Permission.Granted) // { // Log.Debug(TAG, "User granted permission for location."); // AppAndroid.StartLocationService(); // } // else // { // Log.Warn(TAG, "User did not grant permission for the location."); // } // } // if (requestCode == REQUEST_CAMERA) // { // // Received permission result for camera permission. // Log.Info(TAG, "Received response for Camera permission request."); // // Check if the only required permission has been granted // if (grantResults.Length == 1 && grantResults[0] == Permission.Granted) // { // // Camera permission has been granted, preview can be displayed // Log.Info(TAG, "CAMERA permission has now been granted. Showing preview."); // Snackbar.Make(layout, "CAMERA permission has now been granted. Showing preview.", Snackbar.LengthShort).Show(); // } // else // { // Log.Info(TAG, "CAMERA permission was NOT granted."); // Snackbar.Make(layout, "CAMERA permission was NOT granted.", Snackbar.LengthShort).Show(); // } // } // //else if (requestCode == REQUEST_CONTACTS) // //{ // // Log.Info(TAG, "Received response for contact permissions request."); // // // We have requested multiple permissions for contacts, so all of them need to be // // // checked. // // if (PermissionUtil.VerifyPermissions(grantResults)) // // { // // // All required permissions have been granted, display contacts fragment. // // Snackbar.Make(layout, "Contacts permissions were granted.", Snackbar.LengthShort).Show(); // // } // // else // // { // // Log.Info(TAG, "Contacts permissions were NOT granted."); // // Snackbar.Make(layout, "Contacts permissions were NOT granted.", Snackbar.LengthShort).Show(); // // } // //} // else // { // PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults); // base.OnRequestPermissionsResult(requestCode, permissions, grantResults); // //base.OnRequestPermissionsResult(requestCode, permissions, grantResults); // } //} public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) { var layout = FindViewById(Android.Resource.Id.Content); if (requestCode == RC_REQUEST_LOCATION_PERMISSION) { if (grantResults.Length == 1 && grantResults[0] == Permission.Granted) { Log.Debug(TAG, "User granted permission for location."); AppAndroid.StartLocationService(); } else { Log.Warn(TAG, "User did not grant permission for the location."); } } if (requestCode == REQUEST_CAMERA) { // Received permission result for camera permission. Log.Info(TAG, "Received response for Camera permission request."); // Check if the only required permission has been granted if (grantResults.Length == 1 && grantResults[0] == Permission.Granted) { // Camera permission has been granted, preview can be displayed Log.Info(TAG, "CAMERA permission has now been granted. Showing preview."); Snackbar.Make(layout, "CAMERA permission has now been granted. Showing preview.", Snackbar.LengthShort).Show(); } else { Log.Info(TAG, "CAMERA permission was NOT granted."); Snackbar.Make(layout, "CAMERA permission was NOT granted.", Snackbar.LengthShort).Show(); } } else { base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } }