Android Question Device Administrator library - No active admin owned by uid 10315 for policy #0

ykucuk

Well-Known Member
Licensed User
Longtime User
Hello,

I am trying to run the Device Administrator library example project, but I am encountering the following error:

B4X:
java.lang.SecurityException: No active admin owned by uid 10315 for policy #0

How can I resolve this issue? Any guidance or solutions would be greatly appreciated.

Thank you!


B4A version: 13
Device : Samsung Galaxy Tab S5E (SM-T720)
Example File

Manifest
B4X:
'This code will be applied to the manifest file during compilation.
'You do not need to modify it in most cases.
'See this link for for more information: http://www.basic4ppc.com/forum/showthread.php?p=78136
AddManifestText(
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="34"/>
<supports-screens android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true"
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
'End of default text.

AddApplicationText(<receiver android:name="anywheresoftware.b4a.objects.AdminReceiver2"
  android:permission="android.permission.BIND_DEVICE_ADMIN"
  android:exported="true"
  >
  <meta-data android:name="android.app.device_admin"
  android:resource="@xml/device_admin" />
  <intent-filter>
  <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
  </intent-filter>
</receiver>)
CreateResource(xml, device_admin.xml,
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-policies>
  <limit-password />
  <reset-password />
  <force-lock />
  </uses-policies>
</device-admin>
)
 

ykucuk

Well-Known Member
Licensed User
Longtime User
I didn't change any single code on example.
Code
B4X:
#Region Module Attributes


    #FullScreen: False


    #IncludeTitle: True


    #ApplicationLabel: Administrator Example


    #VersionCode: 1


    #VersionName: 1


    #SupportedOrientations: unspecified


    #CanInstallToExternalStorage: False


#End Region








Sub Process_Globals


    Public manager As AdminManager


End Sub





Sub Globals





End Sub


Sub Activity_Create(FirstTime As Boolean)


    Activity.LoadLayout("1")


End Sub





Sub Activity_Resume


    If manager.Enabled And manager.PasswordSufficient Then


        Log("User set properly")


        'you can safely access whatever needs to be accessed...


    Else If manager.Enabled And manager.PasswordSufficient = False Then


        manager.RequestNewPassword


    End If


End Sub





Sub btnEnable_Click


    If manager.Enabled = False Then 


        manager.Enable("Please enable in order to get access to the secured server.")


    End If


End Sub





Sub btnDisable_Click


    manager.Disable


End Sub


Sub btnLock_Click


    If manager.Enabled Then manager.LockScreen


End Sub
ManagerService
B4X:
#Region Module Attributes


    #StartAtBoot: False


#End Region





'Service module


Sub Process_Globals


    'These global variables will be declared once when the application starts.


    'These variables can be accessed from all modules.





End Sub


Sub Service_Create





End Sub





Sub Service_Start (StartingIntent As Intent)


    If StartingIntent.HasExtra("admin") Then


        Select StartingIntent.GetExtra("admin")


            Case "Enabled"


                Log("admin enabled")


                AdminEnabled


            Case "Disabled"


                Log("admin disabled")


            Case "PasswordChanged"


                Log("Password changed")


        End Select


    End If


End Sub


Sub AdminEnabled


    Main.manager.SetPasswordQuality(Main.manager.PASSWORD_QUALITY_NUMERIC, 4)


    If Main.manager.PasswordSufficient = False Then


        Main.manager.RequestNewPassword


    End If


End Sub


Sub Service_Destroy





End Sub

Error

B4X:
** Activity (main) Create (first time) **
** Activity (main) Resume **
Error occurred on line: 24 (Main)
java.lang.SecurityException: No active admin owned by uid 10315 for policy #0
    at android.os.Parcel.createExceptionOrNull(Parcel.java:2386)
    at android.os.Parcel.createException(Parcel.java:2370)
    at android.os.Parcel.readException(Parcel.java:2353)
    at android.os.Parcel.readException(Parcel.java:2295)
    at android.app.admin.IDevicePolicyManager$Stub$Proxy.isActivePasswordSufficient(IDevicePolicyManager.java:8228)
    at android.app.admin.DevicePolicyManager.isActivePasswordSufficient(DevicePolicyManager.java:3713)
    at anywheresoftware.b4a.objects.AdminManager.getPasswordSufficient(AdminManager.java:66)
    at anywheresoftware.b4a.samples.admin.main._activity_resume(main.java:403)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:348)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:157)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:201)
    at anywheresoftware.b4a.samples.admin.main.afterFirstLayout(main.java:111)
    at anywheresoftware.b4a.samples.admin.main.access$000(main.java:17)
    at anywheresoftware.b4a.samples.admin.main$WaitForLayout.run(main.java:83)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:247)
    at android.app.ActivityThread.main(ActivityThread.java:8676)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Caused by: android.os.RemoteException: Remote stack trace:
    at com.android.server.devicepolicy.DevicePolicyManagerService.getActiveAdminOrCheckPermissionForCallerLocked(DevicePolicyManagerService.java:3750)
    at com.android.server.devicepolicy.DevicePolicyManagerService.getActiveAdminOrCheckPermissionForCallerLocked(DevicePolicyManagerService.java:3779)
    at com.android.server.devicepolicy.DevicePolicyManagerService.getActiveAdminForCallerLocked(DevicePolicyManagerService.java:3757)
    at com.android.server.devicepolicy.DevicePolicyManagerService.isActivePasswordSufficient(DevicePolicyManagerService.java:6213)
    at android.app.admin.IDevicePolicyManager$Stub.onTransact(IDevicePolicyManager.java:3430)
** Activity (main) Pause, UserClosed = false **
** Activity (main) Create  **
** Activity (main) Resume **
Error occurred on line: 24 (Main)
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference
    at anywheresoftware.b4a.shell.Shell.runGoodChain(Shell.java:479)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:293)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
    at java.lang.reflect.Method.invoke(Native Method)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:157)
    at anywheresoftware.b4a.BA.raiseEvent(BA.java:201)
    at anywheresoftware.b4a.samples.admin.main.afterFirstLayout(main.java:111)
    at anywheresoftware.b4a.samples.admin.main.access$000(main.java:17)
    at anywheresoftware.b4a.samples.admin.main$WaitForLayout.run(main.java:83)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:247)
    at android.app.ActivityThread.main(ActivityThread.java:8676)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
** Activity (main) Pause, UserClosed = true **
Please post the full error message.

Have you called Manager.Enable? Or have you set the app to be an admin app in the settings?
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
Looks like your app must be registered as a "device owner app". Not trivial.

 
Upvote 0
Top