US Patent No. 9,740,883

SYSTEM AND METHOD FOR ENABLING CONTROL OF MOBILE DEVICE FUNCTIONAL COMPONENTS


Patent No. 9,740,883
Issue Date August 22, 2017
Title System And Method For Enabling Control Of Mobile Device Functional Components
Inventorship Joseph Anakata, Alameda, CA (US)
Virginia Howard, Oakland, CA (US)
Tasos Roumeliotis, Orinda, CA (US)
Scott Hotes, Berkeley, CA (US)
Assignee Location Labs, Inc., Emeryville, CA (US)

Claim of US Patent No. 9,740,883

1. A processor-implemented method performed by a computing device via a particular application operating on an operating system
(“OS”) for controlling removal of the particular application, the method comprising:
receiving a disable request call to the particular application from the OS via settings activity;
purposefully delaying a reply to the disable request call for a particular time period, the purposefully delaying comprising
performing an operating system sleep call;

after the purposeful delay, switching to a particular activity and stopping the settings activity to prevent removal of the
particular application, wherein the particular application includes a client state manager installed on the computing device
which communicates with a server state manager operated on a particular server accessible via a network enabled to lock or
unlock the particular application;

the particular activity enabling a determining of a device administrator permission for the particular application;
storing at least one client state indicating an uninstall lock status of the particular application;
for each of the at least one client state, storing a client digest of the client state on the computing device;
receiving via the network from the particular server periodic transmissions of a particular server digest corresponding to
at least one server state maintained by the particular server, which at least one server state indicates an uninstall lock
status of the particular application, wherein the particular server digest further corresponds to the client digest;

comparing the particular server digest with the corresponding client digest;
transmitting to the particular server via the network a state request corresponding to the at least one server state responsive
to a determination of a difference between the particular server digest and the corresponding client digest;

receiving from the particular server via the network the at least one server state;
disabling an uninstall lock on the particular application as indicated by the received at least one server state to enable
removal of the particular application;

storing the received at least one server state as the corresponding at least one client state; and
storing the received particular server digest as the corresponding client digest.