Windows Phone 8.1 Kiosk mode: Inside AssignedAccessXml

Let’s start my first blog post of this new year with a nice story about a XML that can be used to configure a Windows Phone 8.1 device in a kiosk mode. This XML can be applied on a Windows Phone 8.1 device via OMA-URI settings. As it’s now possible to configure OMA-URI via Microsoft Intune and via Microsoft Intune integrated with ConfigMgr 2012, the information in the post is applicable to both scenario’s. I have to admit that it’s not as simple to configure as kiosk mode for an iOS device, or an Andriod device (via Microsoft Intune), but it does provide a lot more options to configure. In this blog post I will go through the different required elements of the XML and the different configuration options.

<Apps>

The first required element is <Apps>. The list of applications listed in this element is an allowed list of applications. That means that only the listed applications are visible to the end-user. To add applications to this list the productId of an application is required.  The following table shows the productId of the default applications, also known as first party applications.

Application ProductId
Alarms  {5B04B775-356B-4AA0-AAF8-6491FFEA560A}
Battery Saver {C551F76F-3368-42BB-92DF-7BFBB9265636}
Bing Finance  {1E0440F1-7ABF-4B9A-863D-177970EEFB5E}
Bing Food  {CC512389-0456-430F-876B-704B17317DE2}
Bing Health  {CBB8C3BD-99E8-4176-AD8C-95EC6A3641C2}
Bing News {9C3E8CAD-6702-4842-8F61-B8B33CC9CAF1}
Bing Sports {0F4C8C7E-7114-4E1E-A84C-50664DB13B17}
Bing Travel {19CD0687-980B-4838-8880-5F68ABA1671E}
Bing Weather {63C2A117-8604-44E7-8CEF-DF10BE3A57C8}
Calculator  {5B04B775-356B-4AA0-AAF8-6491FFEA5603}
Calendar  {36F9FA1C-FDAD-4CF0-99EC-C03771ED741A}
Camera (built-in) {5B04B775-356B-4AA0-AAF8-6491FFEA5631}
Cortana  {5B04B775-356B-4AA0-AAF8-6491FFEA568C}
Data Sense  {5B04B775-356B-4AA0-AAF8-6491FFEA5646}
Email {5B04B775-356B-4AA0-AAF8-6491FFEA5614}
Facebook {0C340A67-3288-4C76-9375-0F2FEFBA0412}
Games {50A6AEF0-4F35-434B-9308-CB3251303AE4}
Internet Explorer {5B04B775-356B-4AA0-AAF8-6491FFEA5660}
Maps {5B04B775-356B-4AA0-AAF8-6491FFEA5686}
Messaging  {5B04B775-356B-4AA0-AAF8-6491FFEA5610}
Music {D2B6A184-DA39-4C9A-9E0A-8B589B03DEC0}
Office Hub {5B04B775-356B-4AA0-AAF8-6491FFEA561E}
OneDrive {AD543082-80EC-45BB-AA02-FFE7F4182BA8}
OneNote {5B04B775-356B-4AA0-AAF8-6491FFEA561B}
People {5B04B775-356B-4AA0-AAF8-6491FFEA5615}
Phone  {5B04B775-356B-4AA0-AAF8-6491FFEA5611}
Photes {5B04B775-356B-4AA0-AAF8-6491FFEA5632}
Podcasts  {C3215724-B279-4206-8C3E-61D1A9D63ED3}
Settings  {5B04B775-356B-4AA0-AAF8-6491FFEA5601}
Storage Sense {5B04B775-356B-4AA0-AAF8-6491FFEA564D}
Store  {5B04B775-356B-4AA0-AAF8-6491FFEA5633}
Video {6AFFE59E-0467-4701-851F-7AC026E21665}
Wallet {5B04B775-356B-4AA0-AAF8-6491FFEA5683}

The productId of the all the other applications, also known as third party applications, can be found in the Windows Phone Store. Simply navigate to the store and select the required application. This will display an URL that includes the productId. For example see the screenshot below that shows a productId of 3a509cd-61d6-df11-a844-00237de2db9e for the Netflix application.

NetflixUrl

The nice thing is that this isn’t everything that can be configured for the applications. It’s also possible to pin the applications to start by using the <PinToStart> element. When this element is used it’s also required to specify the size and location of the application by using the <Size> and the <Location> elements. The size can be small, medium and large. The location can be provided by using the <LocationX> and the <LocationY> elements. Good to know with those elements is that they start the first line with 0. This all together can make the <Apps> element look like this:

<Apps> <Application productId="{3a509cd-61d6-df11-a844-00237de2db9e}"> <PinToStart> <Size>Medium</Size> <Location> <LocationX>0</LocationX> <LocationY>2</LocationY> </Location> </PinToStart> </Application> </Apps>

<Buttons>

The next required element is <Buttons>.  The buttons in this element can be part of two groups. One group is to lock down the button, which prevents the button from being used and the other group is to remap the button to start an application. To add buttons to this element the XMLname of the button is required.  The following table shows the XMLname of the different buttons an the supported actions.

Button XML name  Block and Override Remap
Camera  Camera  Supported No
Back Back Not supported No
Start (Windows Key) Start Supported No
Search Search Supported Yes (App launch)
Volume Up Not supported No
Volume Down Not supported No
Power Not supported No

Like I mentioned the buttons can be configured  to be locked and to be remapped. This can be configured by using the <ButtonLockdownList> and <ButtonRemapList> elements. Within both elements the <ButtonEvent> element can be used to specify which button event should be locked or be remapped. This event can be Press and/ or PressAndHold. Within the remap event it’s possible to specify an application by using the earlier mentioned productId. This all together can make the <Buttons> element look like this:

<Buttons> <ButtonLockdownList> <Button name="Start"> <ButtonEvent name="PressAndHold" /> </Button> <ButtonRemapList> <Button name="Search"> <ButtonEvent name="Press"> <Application productId= "{3a509cd-61d6-df11-a844-00237de2db9e}" /> </ButtonEvent> </Button> </ButtonRemapList> </ButtonLockdownList> </Buttons>

<Settings>

The next required element is <Settings>. This element is an allowed list for the system and application items from the settings menu. That means that only the listed system and application items are visible to the end-user. To add a system or application item to this list the <System> or the <Application> element can be used with the XMLname of the required system or application item.  The following table shows the XMLname of the default system and applications items.

Element Settings name XML name
System about Microsoft.About
System ease of access Microsoft.Accessibility
System email+accounts Microsoft.Accounts
System advertising id Microsoft.AdvertisingId
System airplane mode Microsoft.AirplaneMode
System battery saver Microsoft.BatterySaver
System Bluetooth Microsoft.Bluetooth
System brightness Microsoft.Brightness
System Cellular+SIM Microsoft.CellularConn
System backup Microsoft.CloudStorageCpl
System workplace Microsoft.CompanyAccount
System date+time Microsoft.DateTime
System quiet hours Microsoft.DoNotDisturb
System driving mode Microsoft.DrivingMode
System feedback Microsoft.Feedback
System find my phone Microsoft.FindMyPhone
System kids corner Microsoft.KidZone
System language Microsoft.Language
System location Microsoft.Location
System project my screen Microsoft.MirrorUX
System notifications+actions Microsoft.NocenterSettings
System lock screen Microsoft.PhoneLock
System region Microsoft.Regional
System sync my settings Microsoft.RoamingCpl
System screen rotation Microsoft.RotationLock
System internet sharing Microsoft.SoftAP
System ringtones+sounds Microsoft.Sounds
System speech Microsoft.Speech
System storage sense Microsoft.StorageSettings
System start+theme Microsoft.Themes
System keyboard Microsoft.TouchKeyboard
System phone update Microsoft.Updates
System VPN Microsoft.VPN
System Wi-Fi Microsoft.WiFi
System NFC Microsoft.NFC
System USB Microsoft.USB
System data sense Microsoft.DataSmart
Application internet explorer Microsoft.IE
Application maps Microsoft.Maps
Application messaging Microsoft.Messaging 
Application Office Microsoft.OfficeMobile 
Application people Microsoft.Contacts 
Application phone Microsoft.Phone 
Application photos+camera Microsoft.Photos 
Application search Microsoft.Search 
Application store Microsoft.Marketplace 
Application wallet Microsoft.Wallet 
Application cortana Microsoft.AssistUX

This all together can make the <Settings> element look like this:

<Settings> <System name="Microsoft.CompanyAccount" /> <Application name="Microsoft.AssistUX" /> </Settings>

<ActionCenter>

The next required element is <ActionCenter>. This element can be used to enable or disable access to the quick settings and notifications, by specifying a value of true or false. This can make the <ActionCenter> element look like this:

<ActionCenter enabled="false" />

<MenuItems>

The next required element is <MenuItems>. This element can be used to prevent menu items from being resized, moved or pinned to start. That will give the end-user the complete locked down experience, as nothing can be adjusted anymore. Within this element the <DisableMenuItems> element can be used to prevent the menu items from be changed. This can make the <MenuItems> element look like this:

<MenuItems> <DisableMenuItems /> </MenuItems>

<StartScreenSize>

The last required element is <StartScreenSize>. This element can be used to configure the size of the start screen. The supported sizes are small, medium and large. Medium and large represent 3-column start views, while small represents a 2-column start view . Besides that, small and medium are for 720-pixel or lower resolution displays, while large is for 1080-pixel or higher resolution displays. This can make the <StartScreenSize> element look like this:

<StartScreenSize>Large</StartScreenSize>

<HandheldLockdown>

The previous six elements come together in the <Default> element, which is located in the top level element named <HandheldLockdown>. Those six elements must always be part of the XML. This makes the complete example of this post look like this:

<?xml version="1.0" encoding="utf-8"?> <HandheldLockdown version="1.0" > <Default> <Apps> <Application productId= "{3a509cd-61d6-df11-a844-00237de2db9e}"> <PinToStart> <Size>Medium</Size> <Location> <LocationX>0</LocationX> <LocationY>2</LocationY> </Location> </PinToStart> </Application> </Apps> <Buttons> <ButtonLockdownList> <Button name="Start"> <ButtonEvent name="PressAndHold" /> </Button> <ButtonRemapList> <Button name="Search"> <ButtonEvent name="Press"> <Application productId= "{3a509cd-61d6-df11- a844-00237de2db9e}" /> </ButtonEvent> </Button> </ButtonRemapList> </ButtonLockdownList> </Buttons> <Settings> <System name="Microsoft.CompanyAccount" /> <Application name="Microsoft.AssistUX" /> </Settings> <ActionCenter enabled="false" /> <MenuItems> <DisableMenuItems /> </MenuItems> <StartScreenSize>Large</StartScreenSize> </Default> </HandheldLockdown>

Further reading

More information about the possible configurations on a Windows Phone 8.1 device can be found in the Windows Phone 8.1 MDM Protocol document. This is a living document that gets updated by Microsoft when required.

4 thoughts on “Windows Phone 8.1 Kiosk mode: Inside AssignedAccessXml”

  1. Hello,

    Is this possible :

    – make an app launch on device start
    – force that app to always be the foreground app
    – remap all buttons while still leaving ability to do factory reset

    Thanks!

    Reply
    • I think you should come far, but I think you can’t do it all yet. For example, at this moment, you can’t remap all the buttons.

      For all the most recent Windows Phone management information, keep an eye on the Windows Phone 8.1 MDM Protocol document.

      Reply
  2. Hej,

    thanks for the great post.
    Helps me much do learn about OMA-URI Settings and device lockdown.
    But, how or where should I configure and deploy this XML via SCCM?

    thanks
    Simon

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.