package Ġcom . he ilig bas il . kn ox sdk sample Ċ Ċ import Ġandroid . app . admin . Device Policy Manager Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . method . Scrolling Movement Method Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . s amsung . android . kn ox . Enterprise Device Manager Ċ import Ġcom . s amsung . android . kn ox . license . Kn ox Enterprise License Manager Ċ Ċ /** Ċ Ġ* ĠThis Ġactivity Ġdisplays Ġthe Ġmain ĠUI Ġof Ġthe Ġapplication . ĠThis Ġis Ġa Ġsimple Ġapplication Ġto Ġrestrict Ċ Ġ* Ġuse Ġof Ġthe Ġdevice Ġcamera Ġusing Ġthe ĠSamsung ĠKn ox ĠSDK . Ċ Ġ* ĠRead Ġmore Ġabout Ġthe ĠKn ox ĠSDK Ġhere : Ċ Ġ* Ġhttps :// se ap . s amsung . com / sdk Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠPlease Ġinsert Ġvalid ĠK PE ĠLicense Ġkey Ġto Ġ[ Constants ]. Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ@ author ĠSamsung ĠR & D ĠCanada ĠTechnical ĠSupport Ċ Ġ*/ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Toggle Admin Btn : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm D PM : ĠDevice Policy Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Device Admin : ĠComponent Name ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Utils : ĠUtils ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlog View Ġ= ĠfindViewById < TextView >( R . id . log view _ id ) ĊĠĠĠĠĠĠĠ Ġlog View . movement Method Ġ= ĠScroll ing Movement Method () ĊĠĠĠĠĠĠĠ Ġm Utils Ġ= ĠUtils ( log View , ĠTAG ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġdevice Ġsupports ĠKn ox ĠSDK ĊĠĠĠĠĠĠĠ Ġm Utils ?. check Api Level ( 2 2 , Ġthis ) ĊĠĠĠĠĠĠĠ Ġm D PM Ġ= Ġget System Service ( DEVICE _ POLICY _ SERVICE ) Ġas ĠDevice Policy Manager ĊĠĠĠĠĠĠĠ Ġm Device Admin Ġ= ĠComponent Name ( this @ MainActivity , ĠSample Admin Receiver :: class . java ) ĊĠĠĠĠĠĠĠ Ġm Toggle Admin Btn Ġ= ĠfindViewById ( R . id . toggle Admin Btn ) ĊĠĠĠĠĠĠĠ Ġm Toggle Admin Btn ?. setOnClickListener ( View . OnClickListener Ġ{ Ġview : ĠView ? Ġ-> Ġtoggle Admin () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġactivate Lic ence Btn Ġ= ĠfindViewById < Button >( R . id . activate License Btn ) ĊĠĠĠĠĠĠĠ Ġactivate Lic ence Btn . setOnClickListener Ġ{ Ġview : ĠView ? Ġ-> Ġactivate License () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdeactivate Lic ence Btn Ġ= ĠfindViewById < Button >( R . id . deactivate License Btn ) ĊĠĠĠĠĠĠĠ Ġdeactivate Lic ence Btn . setOnClickListener Ġ{ Ġview : ĠView ? Ġ-> Ġdeactivate License () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtoggle Camera Btn Ġ= ĠfindViewById < Button >( R . id . toggle Camera Btn ) ĊĠĠĠĠĠĠĠ Ġtoggle Camera Btn . setOnClickListener Ġ{ Ġview : ĠView ? Ġ-> Ġtoggle Camera State () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġrefresh Buttons () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠHandle Ġresult Ġof Ġdevice Ġadministrator Ġactivation Ġrequest Ġ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠDEVICE _ ADMIN _ ADD _ RESULT _ ENABLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRESULT _ C ANCE LED Ġ-> Ġm Utils ?. log ( getString ( R . string . admin _ cancelled )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRESULT _ OK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Utils ?. log ( getString ( R . string . admin _ enabled )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Buttons () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠPresent Ġa Ġdialog Ġto Ġactivate Ġdevice Ġadministrator Ġfor Ġthis Ġapplication Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtoggle Admin () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadmin State Ġ= Ġm Device Admin ?. let Ġ{ Ġm D PM ?. isAdmin Active ( it ) Ġ} Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( admin State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Utils ?. log ( getString ( R . string . de activ ating _ admin )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDe activate Ġapplication Ġas Ġdevice Ġadministrator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm D PM ?. remove Active Admin ( Component Name ( this , ĠSample Admin Receiver :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Toggle Admin Btn ?. text Ġ= ĠgetString ( R . string . activate _ admin ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Utils ?. log ( getString ( R . string . activ ating _ admin )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAsk Ġthe Ġuser Ġto Ġadd Ġa Ġnew Ġdevice Ġadministrator Ġto Ġthe Ġsystem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Device Policy Manager . ACTION _ ADD _ DEVICE _ ADMIN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Device Policy Manager . EXTRA _ DEVICE _ ADMIN , Ġm Device Admin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġadd Ġdevice Ġadministrator Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠDEVICE _ ADMIN _ ADD _ RESULT _ ENABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Utils ?. process Exception ( e , ĠTAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNote Ġthat Ġembedding Ġyour Ġlicense Ġkey Ġin Ġcode Ġis Ġunsafe Ġand Ġis Ġdone Ġhere Ġfor ĊĠĠĠĠ Ġ* Ġdemonstr ation Ġpurposes Ġonly . ĊĠĠĠĠ Ġ* ĠPlease Ġvisit Ġhttps :// se ap . s amsung . com / license - keys / about . Ġfor Ġmore Ġdetails Ġabout Ġlicense ĊĠĠĠĠ Ġ* Ġkeys . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġactivate License () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠInstantiate Ġthe ĠEnterprise License Manager Ġclass Ġto Ġuse Ġthe Ġactivate License Ġmethod ĊĠĠĠĠĠĠĠ Ġval Ġk lm Manager Ġ= ĠKn ox Enterprise License Manager . getInstance ( this . application Context ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠK PE ĠLicense ĠActivation ĠTODO ĠAdd Ġlicense Ġkey Ġto ĠConstants . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk lm Manager . activate License ( Constants . K PE _ LICENSE _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Utils ?. log ( resources . getString ( R . string . activate _ license _ progress )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Utils ?. process Exception ( e , ĠTAG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDe activate Ġthe Ġlicense . ĠDo ing Ġthis Ġfre es Ġup Ġa Ġseat Ġin Ġa Ġlicense Ġwith Ġlimited Ġse ats . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdeactivate License () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInstantiate Ġthe ĠEnterprise License Manager Ġclass Ġto Ġuse Ġthe Ġactivate License Ġmethod ĊĠĠĠĠĠĠĠ Ġval Ġk lm Manager Ġ= ĠKn ox Enterprise License Manager . getInstance ( this . application Context ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠK PE ĠLicense ĠActivation ĠTODO ĠAdd Ġlicense Ġkey Ġto ĠConstants . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk lm Manager . de Activate License ( Constants . K PE _ LICENSE _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Utils ?. log ( resources . getString ( R . string . deactivate _ license _ progress )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Utils ?. process Exception ( e , ĠTAG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠToggle Ġthe Ġrestriction Ġof Ġthe Ġdevice Ġcamera Ġon / off . ĠWhen Ġset Ġto Ġdisabled , Ġthe Ġend Ġuser Ġwill ĊĠĠĠĠ Ġ* Ġbe Ġunable Ġto Ġuse Ġthe Ġdevice Ġcameras . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtoggle Camera State () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInstantiate Ġthe ĠEnterprise Device Manager Ġclass ĊĠĠĠĠĠĠĠ Ġval Ġenterprise Device Manager Ġ= ĠEnterprise Device Manager . getInstance ( this . application Context ) ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe ĠRe striction Policy Ġclass Ġwhere Ġthe Ġset Camera State Ġmethod Ġlives ĊĠĠĠĠĠĠĠ Ġval Ġrestriction Policy Ġ= Ġenterprise Device Manager . restriction Policy ĊĠĠĠĠĠĠĠ Ġval Ġcamera Enabled Ġ= Ġrestriction Policy . is Camera Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠToggle Ġthe Ġcamera Ġstate Ġon / off ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestriction Policy . set Camera State (! camera Enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Utils ?. log ( resources . getString ( R . string . camera _ state , Ġ! camera Enabled )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Utils ?. process Exception ( e , ĠTAG ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdate Ġbutton Ġstate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrefresh Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadmin State Ġ= Ġm Device Admin ?. let Ġ{ Ġm D PM ?. isAdmin Active ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( admin State ?. not () Ġ!= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Toggle Admin Btn ?. text Ġ= ĠgetString ( R . string . activate _ admin ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Toggle Admin Btn ?. text Ġ= ĠgetString ( R . string . deactivate _ admin ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEVICE _ ADMIN _ ADD _ RESULT _ ENABLE Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ }