Android 11 enforces scoped storage restrictions which prevent access to any application’s private folder under /sdcard/Android/data . This means that it is no longer possible to push Velocity host profiles (.wldep) files to the Velocity app folder in order to configure a Zebra device. Fortunately there is an alternative path for storing profiles which is the /enterprise/usr folder i.e. any WLDEP files stored at this location will be loaded and displayed in the Velocity profile select screen provided they have the correct file attributes (which need to be set for global read/write ). There are several methods for copying the profile files and ensuring they have the file attributes configured correctly:
- ADB – using ADB push to copy the files to the folder normally requires a cabled connection but will configure the file attributes correctly e.g.
Adb push myhostprofile.wldep /enterprise/usr
- StageNow/Mx – the FileMgr CSP will also copy the files and set the required attributes either via a StageNow profile or using an EMDK app or raw XML e.g. the XML below will copy the file from the root of the internal sdcard to /enterprise/usr
<!--FILECOPY-->
<characteristic version="0.6" type="FileMgr">
<parm name="FileAction" value="1" />
<characteristic type="file-details">
<parm name="TargetAccessMethod" value="2" />
<parm name="TargetPathAndFileName" value="/enterprise/usr/1_Migrate_Velocity_Dynamic.wldep" />
<parm name="SourceAccessMethod" value="2" />
<parm name="SourcePathAndFileName" value="/sdcard/1_Migrate_Velocity_Dynamic.wldep" />
</characteristic>
</characteristic>
- EMM – Most EMM’s will support OEMConfig and the above XML can be processed using a Device Administrator step in an OEMConfig profile. For SOTI specifically it is also possible to use a script command to copy the file(s) to the /enterprise/usr folder and then the following script command to set the required file attributes (thanks to Radim Kadlec for this tip):
__chmod 777 /enterprise/usr/profile.wldep
1 Replies
Another working example for you:
This would be in an XML file that you would call with the StageNow "Batch" under the XpertMode. This assumes you used the File Mgr to get all the referenced files below into the /sdcard/ . This is just the correct xml setup that will help you.
<wap-provisioningdoc>
<characteristic version="0.6" type="FileMgr">
<parm name="FileAction" value="1" />
<characteristic type="file-details">
<parm name="TargetAccessMethod" value="2" />
<parm name="TargetPathAndFileName" value="/enterprise/usr/1_GenericMigratePortrait.wldep" />
<parm name="SourceAccessMethod" value="2" />
<parm name="SourcePathAndFileName" value="/sdcard/1_GenericMigratePortrait.wldep" />
</characteristic>
</characteristic>
<characteristic version="0.6" type="FileMgr">
<parm name="FileAction" value="1" />
<characteristic type="file-details">
<parm name="TargetAccessMethod" value="2" />
<parm name="TargetPathAndFileName" value="/enterprise/usr/2_GenericOptimizePortrait.wldep" />
<parm name="SourceAccessMethod" value="2" />
<parm name="SourcePathAndFileName" value="/sdcard/2_GenericOptimizePortrait.wldep" />
</characteristic>
</characteristic>
<characteristic version="0.6" type="FileMgr">
<parm name="FileAction" value="1" />
<characteristic type="file-details">
<parm name="TargetAccessMethod" value="2" />
<parm name="TargetPathAndFileName" value="/enterprise/usr/3_GenericModernizePortrait.wldep" />
<parm name="SourceAccessMethod" value="2" />
<parm name="SourcePathAndFileName" value="/sdcard/3_GenericModernizePortrait.wldep" />
</characteristic>
</characteristic>
<characteristic version="0.6" type="FileMgr">
<parm name="FileAction" value="1" />
<characteristic type="file-details">
<parm name="TargetAccessMethod" value="2" />
<parm name="TargetPathAndFileName" value="/enterprise/usr/6_GenericTouchGreenscreen.wldep" />
<parm name="SourceAccessMethod" value="2" />
<parm name="SourcePathAndFileName" value="/sdcard/6_GenericTouchGreenscreen.wldep" />
</characteristic>
</characteristic>
<characteristic version="0.6" type="FileMgr">
<parm name="FileAction" value="1" />
<characteristic type="file-details">
<parm name="TargetAccessMethod" value="2" />
<parm name="TargetPathAndFileName" value="/enterprise/usr/7_GenericTransparentKeyboard.wldep" />
<parm name="SourceAccessMethod" value="2" />
<parm name="SourcePathAndFileName" value="/sdcard/7_GenericTransparentKeyboard.wldep" />
</characteristic>
</characteristic>
</wap-provisioningdoc>