public Task <bool> SignInWithGoogle()
        {
            Log.Debug("TOOLBELT", "Signing in with Google");
            var activity = MainActivity.Instance;
            var listener = new ActivityResultListener(activity);

            Log.Debug("TOOLBELT", "Starting google login activity");
            var googleIntent = new Intent(activity, typeof(GoogleLoginActivity));

            activity.StartActivityForResult(googleIntent, REQ_AUTH);

            return(listener.Task.ContinueWith(t =>
            {
                if (t.IsCompletedSuccessfully && !string.IsNullOrWhiteSpace(t.Result))
                {
                    return SignInWithGoogle(t.Result);
                }

                if (t.Exception != null)
                {
                    Log.Error("TOOLBELT", t.Exception.ToString());
                    this.Log().ErrorException("Error signing in with Google", t.Exception);
                }

                return Task.FromResult(false);
            }).Unwrap());
        }
예제 #2
0
        public void ShowInit(string clientToken)
        {
            var activity = (MainActivity)Forms.Context;
            var listener = new ActivityResultListener(activity, null);
            var request  = new DropInRequest().ClientToken(clientToken);

            activity.StartActivityForResult(request.GetIntent(Forms.Context), 1);
        }
예제 #3
0
        public Task <bool> ShowPay(string clientToken, int bookingId)
        {
            var activity = (MainActivity)Forms.Context;
            var listener = new ActivityResultListener(activity, bookingId);
            var request  = new DropInRequest().ClientToken(clientToken);

            activity.StartActivityForResult(request.GetIntent(Forms.Context), 1);
            return(listener.Task);
        }
예제 #4
0
        protected override async Task <bool> EnableDeviceLocationService()
        {
            var context         = Forms.Context;
            var activity        = (MainActivity)context;
            var listener        = new ActivityResultListener(activity);
            var googleApiClient = new GoogleApiClient.Builder(activity).AddApi(LocationServices.API).Build();

            googleApiClient.Connect();
            var locationRequest = LocationRequest.Create();

            locationRequest.SetPriority(LocationRequest.PriorityHighAccuracy);
            locationRequest.SetInterval(10000);
            locationRequest.SetFastestInterval(10000 / 2);

            var builder = new LocationSettingsRequest.Builder().AddLocationRequest(locationRequest);

            builder.SetAlwaysShow(true);

            var result = LocationServices.SettingsApi.CheckLocationSettings(googleApiClient, builder.Build());

            result.SetResultCallback((LocationSettingsResult callback) =>
            {
                switch (callback.Status.StatusCode)
                {
                case LocationSettingsStatusCodes.Success:
                    {
                        break;
                    }

                case LocationSettingsStatusCodes.ResolutionRequired:
                    {
                        try
                        {
                            // Show the dialog by calling startResolutionForResult(), and check the result
                            // in onActivityResult().
                            callback.Status.StartResolutionForResult(activity, REQUEST_CHECK_SETTINGS);
                        }
                        catch (IntentSender.SendIntentException e)
                        {
                        }

                        break;
                    }

                default:
                    {
                        // If all else fails, take the user to the android location settings
                        activity.StartActivity(new Intent(Android.Provider.Settings.ActionLocationSourceSettings));
                        break;
                    }
                }
            });

            return(await listener.Task);
        }
예제 #5
0
        public Task <string> ChoosePhoneNumber()
        {
            //request code to identify intent
            var requestCode         = 0xCA;
            var activityListener    = new ActivityResultListener(MainActivity.Instance, requestCode);
            var contactPickerIntent = new Intent(Intent.ActionPick);

            contactPickerIntent.SetType(ContactsContract.CommonDataKinds.Phone.ContentType);
            MainActivity.Instance.StartActivityForResult(contactPickerIntent, requestCode);
            return(activityListener.Task);
        }
        public async Task <string> OpenGatewayPage(string url)
        {
            var activity = (MainActivity)CrossCurrentActivity.Current.Activity;
            var listener = new ActivityResultListener(activity);

            Intent intent = new Intent(CrossCurrentActivity.Current.Activity, typeof(PayTransferActivity));

            intent.PutExtra("url", url);
            activity.StartActivityForResult(intent, 2);

            return(await listener.Task);
        }
예제 #7
0
 public Task <bool> EnableBt()
 {
     try
     {
         if (!BtIsEnable())
         {
             var listener = new ActivityResultListener();
             MainActivity.Instance.StartActivityForResult(new Intent(BluetoothAdapter.ActionRequestEnable), REQUEST_ENABLE);
             return(listener.Task);
         }
         return(Task.FromResult(true));
     }
     catch (Exception ex)
     {
         Android.Util.Log.Error("TEST", "Enable BT error, ex=" + ex.Message);
     }
     return(Task.FromResult(false));
 }
예제 #8
0
        public Task <string> ReadQRCode()
        {
            string result;

            var activity = (MainActivity)Forms.Context;
            var listener = new ActivityResultListener(activity);

            const int RequestEnableBt = 2;
            //var intent = new Intent(BluetoothAdapter.ActionRequestEnable);
            var intent = new Intent(Forms.Context, typeof(QRCodeReaderAcitivty));

            activity.StartActivityForResult(intent, RequestEnableBt);

            return(listener.Task);

            /*var intent = new Intent(Forms.Context, typeof(QRCodeReaderAcitivty));
             * Forms.Context.StartActivity (intent);
             * ((Activity)Forms.Context).StartActivityForResult(intent,101);
             * return null;*/
        }
예제 #9
0
        public Task <bool> EnableGps()
        {
            try
            {
                var locationManager = (LocationManager)Android.App.Application.Context.GetSystemService(Context.LocationService);
                if (!GpsIsEnable())
                {
                    var listener = new ActivityResultListener();
                    MainActivity.Instance.StartActivityForResult(new Intent(Android.Provider.Settings.ActionLocationSourceSettings), REQUEST_ENABLE);
                    return(listener.Task);
                }
                return(Task.FromResult(true));
            }
            catch (Exception)
            {
                Android.Util.Log.Error("TEST", "Enable GPS error");
            }

            return(Task.FromResult(false));
        }