/// <summary>
        /// Check if permissions are even possible
        /// </summary>
        /// <returns><c>true</c>, if admin was ised, <c>false</c> otherwise.</returns>
        public bool IsAdmin()
        {
            Android.App.Admin.DevicePolicyManager devicePolicyManager = (Android.App.Admin.DevicePolicyManager)Android.App.Application.Context.GetSystemService(Android.Content.Context.DevicePolicyService);
            Android.Content.ComponentName         mDeviceAdminRcvr    = new Android.Content.ComponentName(Android.App.Application.Context,
                                                                                                          Java.Lang.Class.FromType(typeof(FastTalkerSkiaSharp.Droid.Base.DeviceAdminReceiverClass)).Name);

            return(devicePolicyManager.IsAdminActive(mDeviceAdminRcvr));
        }
        public override void OnCustomTabsServiceConnected(ComponentName name, CustomTabsClient client)
        {
            IServiceConnectionCallback connectionCallback = null;     //mConnectionCallback.Get();

            mConnectionCallback.TryGetTarget(out connectionCallback); //.Get();

            if (connectionCallback != null)
            {
                connectionCallback.OnServiceConnected(client);
            }
        }
Example #3
0
        public override void OnServiceDisconnected(ComponentName name)
        {
            IServiceConnectionCallback connectionCallback = null; // mConnectionCallback.Get();

            mConnectionCallback.TryGetTarget(out connectionCallback);

            if (connectionCallback != null)
            {
                connectionCallback.OnServiceDisconnected();
            }
        }
Example #4
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

            var altIconApp = new AlternateIcon.App();

            altIconApp.AppIconChanged += (sender, icon) =>
            {
                var chickenActivityAlias = new Android.Content.ComponentName(this, "com.dgatto.alternateicon.SplashActivity.Chicken");
                var cactusActivityAlias  = new Android.Content.ComponentName(this, "com.dgatto.alternateicon.SplashActivity.Cactus");

                // ComponentEnableOption.DontKillApp (i.e. kill app in five seconds)

                switch (icon)
                {
                case AppIcon.Chicken:
                    // Disable the launcher activity and enable it's alias
                    PackageManager.SetComponentEnabledSetting(
                        chickenActivityAlias,
                        ComponentEnabledState.Enabled,
                        ComponentEnableOption.DontKillApp);
                    PackageManager.SetComponentEnabledSetting(
                        cactusActivityAlias,
                        ComponentEnabledState.Disabled,
                        ComponentEnableOption.DontKillApp);
                    break;

                case AppIcon.Cactus:
                    PackageManager.SetComponentEnabledSetting(
                        cactusActivityAlias,
                        ComponentEnabledState.Enabled,
                        ComponentEnableOption.DontKillApp);
                    PackageManager.SetComponentEnabledSetting(
                        chickenActivityAlias,
                        ComponentEnabledState.Disabled,
                        ComponentEnableOption.DontKillApp);
                    break;

                default:
                    break;
                }
            };

            LoadApplication(altIconApp);
        }
        /// <summary>
        /// Set screen pinning, with user-level privileges used as a backup if necessary
        /// </summary>
        /// <param name="status">If set to <c>true</c> status.</param>
        public void RequestAdmin(bool status)
        {
            Android.App.Admin.DevicePolicyManager devicePolicyManager = (Android.App.Admin.DevicePolicyManager)Android.App.Application.Context.GetSystemService(Android.Content.Context.DevicePolicyService);
            Android.Content.ComponentName         mDeviceAdminRcvr    = new Android.Content.ComponentName(Android.App.Application.Context,
                                                                                                          Java.Lang.Class.FromType(typeof(FastTalkerSkiaSharp.Droid.Base.DeviceAdminReceiverClass)).Name);

            // This is the preferred, hard lock method with device as administrator
            try
            {
                if (devicePolicyManager.IsAdminActive(mDeviceAdminRcvr))
                {
                    devicePolicyManager.SetLockTaskPackages(mDeviceAdminRcvr, new System.String[] { Android.App.Application.Context.PackageName });

                    if (devicePolicyManager.IsLockTaskPermitted(Android.App.Application.Context.PackageName))
                    {
                        if (status)
                        {
                            Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity.StartLockTask();

                            return;
                        }
                        else
                        {
                            Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity.StopLockTask();

                            return;
                        }
                    }
                }
            }
            catch  { }

            // This is the fallback, pinning the device and overriding other keys
            try
            {
                Android.App.ActivityManager activityManager = (Android.App.ActivityManager)Android.App.Application.Context.GetSystemService(Android.Content.Context.ActivityService);

                if (status)
                {
                    Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity.StartLockTask();
                }
                else
                {
                    Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity.StopLockTask();
                }
            }
            catch { }
        }
        protected void custom_tabs_activit_manager_CustomTabsServiceConnected
        (
            Android.Content.ComponentName name,
            CustomTabsClient client
        )
        {
            custom_tabs_intent_builder = new CustomTabsIntent.Builder(custom_tabs_activity_manager.Session);

            custom_tabs_intent_builder.EnableUrlBarHiding();

            if (CustomTabsConfiguration.IsWarmUpUsed)
            {
                System.Diagnostics.Debug.WriteLine("CustomTabsActivityManager.WarmUp()");
                client.Warmup(0);
                //custom_tabs_activity_manager.Warmup();
            }

            if (CustomTabsConfiguration.IsPrefetchUsed)
            {
                System.Diagnostics.Debug.WriteLine("CustomTabsActivityManager PREFETCH");
                custom_tabs_activity_manager.MayLaunchUrl(uri.ToString(), null, null);
            }

            if (CustomTabsConfiguration.AreAnimationsUsed)
            {
                custom_tabs_intent_builder.SetStartAnimations
                (
                    activity,
                    Xamarin.Auth.Resource.Animation.slide_in_right,
                    Xamarin.Auth.Resource.Animation.slide_out_left
                );
                custom_tabs_intent_builder.SetExitAnimations
                (
                    activity,
                    global::Android.Resource.Animation.SlideInLeft,
                    global::Android.Resource.Animation.SlideOutRight
                );
            }

            custom_tabs_activity_manager.LaunchUrl(uri.ToString(), custom_tabs_intent_builder.Build());

            return;
        }