GithubHelp home page GithubHelp logo

bintianqi / owndroid Goto Github PK

View Code? Open in Web Editor NEW
315.0 315.0 11.0 1.15 MB

Own your Android! 使用Device owner管理你的安卓设备。Manage your device with Device owner privilege

Home Page: https://owndroid.pages.dev

License: GNU General Public License v3.0

Kotlin 93.65% AIDL 0.04% Java 6.31%
android device-owner

owndroid's Introduction

Hi there 👋

我是宾天奇,是一个来自广州的初中生,我今年初三了。

I'm BinTianqi, a junior high school student from Guangzhou. I'm grade 9 this year.

🔭 现在正在做的事 | I’m currently working on

  • OwnDroid

    使用安卓的Device admin, Profile owner和Device owner特权,完全掌控你的设备。

    Use Device admin, Profile owner and Device owner privilege, take full control of your Android device.

  • ZW Lab

    往文本中加入零宽字符,隐藏一段文字或防止Regex匹配。

    Add zero-width characters to text, hide text in text or escape Regex.

🌱 现在正在学的事 | I’m currently learning

  • Kotlin

📫 联系我 | How to reach me:

电子邮件 (E-mail):[email protected]

owndroid's People

Contributors

bintianqi avatar mikropsoft avatar minoricew avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

owndroid's Issues

Device Management

What sort of settings does this allow the user to change that they can't normally?

[Feature Request] Support third-party Device Owner API

这个应用很好,完全符合我的想法。很久之前我就在想,设备管理员虽然有很高的权限,但是目前市面上的应用好像并没有体现出他权限之高。直到我偶然间发现了这个应用,就发现这就是我理想中想要的应用,所有能够实现的全在这上面实现了。但是有个问题,就是能不能将这个管理员权限权限供其他应用使用,供给他们授权,像dhizuku那样。就比如说雹,installx,他们都可以通过dhizuku授权达到共享的目的。我开始想的是用dhizuku给owndroid授权,看了之前的议题,既然dhizuku它的api不太ok,那么owndroid可不可以也出一个共享管理员权限的功能,以便于让其他的软件可以使用管理员权限,从而代替dhizuku的功能😘😘😘

[Enhancement] Add help dialog for users migrating from old versions

描述问题 / Describe the issue

OwnDroid 在刚刚的更新中修改了包名 (com.binbin.androidowner --> com.bintianqi.owndroid)。授予了旧版本应用 Device owner 权限的用户需要手动将旧版本应用上的权限迁移至新版本应用上。部分用户可能不知道具体如何操作 (例如可能有部分用户在激活后再也没有点进顶部的 "已激活" 的权限管理入口, 同时他们大概也不会去翻用户指南)。这可能造成不必要的 Issues 出现, 部分用户甚至可能会尝试通过 adb 先禁用旧应用的 Device owner 权限, 再手动删除设备上所有用户和账户后, 使用 adb 将 Device owner 权限授予新应用。这将会造成完全不必要的用户和账户数据丢失, 并且带来许多麻烦。

预期结果 / Expected result

建议在短期之内 (例如一个大版本号之内, 5.X 中) 为 OwnDroid 添加旧版本迁移检测。OwnDroid 首次启动时会检测设备的 Device owner 是否被设为了旧版本应用 (或者说, 如果无 Shizuku 权限情况下没有这种 API 的话, 那么就检测旧版本应用的包名是否存在于 Package Manager 列表中)。如果是, OwnDroid 就会向用户展示一个帮助提示框, 告知用户可以通过 OwnDroid 的 "转移 Device owner 所有权" 的功能以直接迁移至新版本。

建议的实现方案 / Advised implement

· 直接添加一个对话框。
· 或是单独添加一个引导页面, 首次启动时符合条件则提示用户是否前往查看引导页面。

额外信息 / Additional information

同时最好在引导末尾建议用户迁移完成后重启设备, 否则可能即使卸载了旧版本 OwnDroid, 也会在设备管理器页面看到有两个 OwnDroid 都被激活为 Device admin。(影响未知, 但看着难受)

版本信息 / Version

OwnDroid 版本: v5.0-preview2

app name

Hmmm how about Android Annihilator? Maybe if it was extremely more powerful. I'm sure there will be more exploits to integrate. I've been using Bixby vision on another device in order to use it, but like any translation sometimes things come out a little funny. I bet English is a nightmare since we have so many similar words. So far it's a great app though!

[BUG] Crash on App manager

[Device Brand]: google
[Device Model]: Pixel 7
[Android Version]: 14
[Android API Level]: 34
[Process ID]: 25498
[CPU ABI]: arm64-v8a
[Package Name]: com.bintianqi.owndroid
[Version Name]: 6.0
[Version Code]: 32
[Target SDK]: 34
[Min SDK]: 21
[Error Type]: JVM
[Crash Time]: 2024-08-15T15:00:40.002
[Stack Trace]:
java.lang.SecurityException: Admin ComponentInfo{com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver} does not exist or is not owned by uid 10296
	at android.os.Parcel.createExceptionOrNull(Parcel.java:3183)
	at android.os.Parcel.createException(Parcel.java:3167)
	at android.os.Parcel.readException(Parcel.java:3150)
	at android.os.Parcel.readException(Parcel.java:3092)
	at android.app.admin.IDevicePolicyManager$Stub$Proxy.isPackageSuspended(IDevicePolicyManager.java:8210)
	at android.app.admin.DevicePolicyManager.isPackageSuspended(DevicePolicyManager.java:9734)
	at A1.a.r(SourceFile:1)
	at k0.d.r(SourceFile:16)
	at A1.L.i(SourceFile:193)
	at R.b.e(SourceFile:44)
	at R.b.i(SourceFile:9)
	at F.z.l(SourceFile:390)
	at R.b.l(SourceFile:52)
	at J.d.a(SourceFile:222)
	at S.h.e(SourceFile:162)
	at a0.t.o(SourceFile:90)
	at androidx.navigation.compose.o.l(SourceFile:75)
	at R.b.l(SourceFile:52)
	at J.d.b(SourceFile:150)
	at a0.t.k(SourceFile:51)
	at androidx.navigation.compose.t.i(SourceFile:73)
	at R.b.e(SourceFile:44)
	at R.b.i(SourceFile:9)
	at D.w0.k(SourceFile:268)
	at R.b.c(SourceFile:44)
	at R.b.k(SourceFile:9)
	at androidx.compose.animation.a.a(SourceFile:1287)
	at s.c.l(SourceFile:273)
	at R.b.l(SourceFile:52)
	at a0.t.i(SourceFile:927)
	at a0.t.m(SourceFile:275)
	at a0.t.l(SourceFile:46)
	at A1.M.k(SourceFile:1865)
	at R.b.c(SourceFile:44)
	at R.b.k(SourceFile:9)
	at H.y0.l(SourceFile:112)
	at R.b.l(SourceFile:52)
	at F.z.l(SourceFile:332)
	at R.b.l(SourceFile:52)
	at J.d.I(SourceFile:15)
	at J.q.q(SourceFile:122)
	at J.q.k(SourceFile:11)
	at J.v.k(SourceFile:35)
	at J.x0.a(SourceFile:45)
	at J.o.a(SourceFile:5)
	at J.v.l(SourceFile:9)
	at q0.B.i(SourceFile:22)
	at q0.B.h(SourceFile:118)
	at q0.w.g0(SourceFile:167)
	at H.B0.l(SourceFile:881)
	at q0.y.c(SourceFile:74)
	at s0.t.a(SourceFile:38)
	at s0.D.d(SourceFile:565)
	at T.s.d(SourceFile:60)
	at T.v.a(SourceFile:52)
	at T.w.c(SourceFile:153)
	at s0.f0.a(SourceFile:3)
	at s0.I.m0(SourceFile:129)
	at s0.I.a(SourceFile:91)
	at x.k.c(SourceFile:83)
	at s0.t.a(SourceFile:38)
	at c0.J.g(SourceFile:1)
	at s0.y.a(SourceFile:11)
	at c0.J.g(SourceFile:1)
	at s0.y.a(SourceFile:11)
	at s0.D.d(SourceFile:565)
	at T.s.d(SourceFile:60)
	at T.v.a(SourceFile:52)
	at T.w.c(SourceFile:153)
	at s0.f0.a(SourceFile:3)
	at s0.I.m0(SourceFile:129)
	at s0.I.a(SourceFile:91)
	at s.l.c(SourceFile:24)
	at s0.t.a(SourceFile:38)
	at s.B.g(SourceFile:191)
	at s0.y.a(SourceFile:11)
	at c0.J.g(SourceFile:1)
	at s0.y.a(SourceFile:11)
	at D.R0.k(SourceFile:151)
	at q0.s.g(SourceFile:8)
	at s0.y.a(SourceFile:11)
	at s0.D.d(SourceFile:565)
	at T.s.d(SourceFile:60)
	at T.v.a(SourceFile:52)
	at T.w.c(SourceFile:153)
	at s0.f0.a(SourceFile:3)
	at s0.I.m0(SourceFile:129)
	at s0.I.a(SourceFile:91)
	at s.f.c(SourceFile:40)
	at s0.t.a(SourceFile:38)
	at s.i.g(SourceFile:1)
	at s0.c.g(SourceFile:10)
	at s0.y.a(SourceFile:11)
	at c0.J.g(SourceFile:1)
	at s0.y.a(SourceFile:11)
	at x.v.g(SourceFile:59)
	at s0.c.g(SourceFile:10)
	at s0.y.a(SourceFile:11)
	at x.r.g(SourceFile:99)
	at s0.y.a(SourceFile:11)
	at s0.D.d(SourceFile:565)
	at T.s.d(SourceFile:60)
	at T.v.a(SourceFile:52)
	at T.w.c(SourceFile:153)
	at s0.f0.a(SourceFile:3)
	at s0.I.m0(SourceFile:129)
	at s0.Q.d(SourceFile:55)
	at s0.Q.l(SourceFile:124)
	at s0.Q.f(SourceFile:121)
	at s0.Q.e(SourceFile:44)
	at androidx.compose.ui.platform.AndroidComposeView.n(SourceFile:3)
	at s0.I.m0(SourceFile:58)
	at s0.Q.d(SourceFile:18)
	at s0.Q.n(SourceFile:18)
	at s0.Q.k(SourceFile:64)
	at androidx.compose.ui.platform.AndroidComposeView.onMeasure(SourceFile:83)
	at android.view.View.measure(View.java:27866)
	at androidx.compose.ui.platform.a.e(SourceFile:64)
	at androidx.compose.ui.platform.a.onMeasure(SourceFile:4)
	at android.view.View.measure(View.java:27866)
	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7028)
	at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
	at android.view.View.measure(View.java:27866)
	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7028)
	at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1608)
	at android.widget.LinearLayout.measureVertical(LinearLayout.java:878)
	at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
	at android.view.View.measure(View.java:27866)
	at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7028)
	at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
	at com.android.internal.policy.DecorView.onMeasure(DecorView.java:768)
	at android.view.View.measure(View.java:27866)
	at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:4486)
	at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:3012)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3333)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2718)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9937)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1406)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1415)
	at android.view.Choreographer.doCallbacks(Choreographer.java:1015)
	at android.view.Choreographer.doFrame(Choreographer.java:945)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1389)
	at android.os.Handler.handleCallback(Handler.java:959)
	at android.os.Handler.dispatchMessage(Handler.java:100)
	at android.os.Looper.loopOnce(Looper.java:232)
	at android.os.Looper.loop(Looper.java:317)
	at android.app.ActivityThread.main(ActivityThread.java:8592)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
Caused by: android.os.RemoteException: Remote stack trace:
	at com.android.server.devicepolicy.DevicePolicyManagerService.getCallerIdentity(DevicePolicyManagerService.java:2391)
	at com.android.server.devicepolicy.DevicePolicyManagerService.isPackageSuspended(DevicePolicyManagerService.java:13018)
	at android.app.admin.IDevicePolicyManager$Stub.onTransact$isPackageSuspended$(IDevicePolicyManager.java:14279)
	at android.app.admin.IDevicePolicyManager$Stub.onTransact(IDevicePolicyManager.java:3848)
	at android.os.Binder.execTransactInternal(Binder.java:1500)

Root granted via Sui/ Shizuku

Version 5.3.1 crashes when creating work profile on A14 QPR2 (5.2 works)

FATAL EXCEPTION: main
Process: com.bintianqi.owndroid, PID: 25576
java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode
	at androidx.fragment.app.i.l(SourceFile:11)
	at androidx.fragment.app.i.startActivityForResult(SourceFile:5)
	at Q0.b.b(SourceFile:1)
	at androidx.activity.g.b(SourceFile:289)
	at E0.q.r(SourceFile:32)
	at I.p.d(SourceFile:500)
	at s.e0.q(SourceFile:446)
	at u.L0.s(SourceFile:134)
	at F1.a.n(SourceFile:9)
	at U1.y.r(SourceFile:79)
	at U1.f.q(SourceFile:105)
	at U1.f.E(SourceFile:33)
	at U1.f.n(SourceFile:17)
	at l0.D.v0(SourceFile:51)
	at l0.D.S(SourceFile:31)
	at t.f.S(SourceFile:3)
	at t.d.S(SourceFile:5)
	at l0.g.h(SourceFile:157)
	at l0.g.h(SourceFile:136)
	at l0.g.h(SourceFile:136)
	at l0.g.h(SourceFile:136)
	at l0.g.h(SourceFile:136)
	at l0.g.h(SourceFile:136)
	at C.Z0.q(SourceFile:36)
	at F.z.f(SourceFile:138)
	at androidx.compose.ui.platform.AndroidComposeView.G(SourceFile:81)
	at androidx.compose.ui.platform.AndroidComposeView.o(SourceFile:214)
	at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(SourceFile:76)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3124)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2805)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3124)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2805)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3124)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2805)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3124)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2805)
	at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:496)
	at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1947)
	at android.app.Activity.dispatchTouchEvent(Activity.java:4413)
	at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:454)
	at android.view.View.dispatchPointerEvent(View.java:16157)
	at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:7436)
	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:7224)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6625)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6682)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6648)
	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6814)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6656)
	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6871)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6629)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6682)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6648)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6656)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6629)
	at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9700)
	at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9651)
	at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9620)
	at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9826)
	at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:267)
	at android.os.MessageQueue.nativePollOnce(Native Method)
	at android.os.MessageQueue.next(MessageQueue.java:344)
	at android.os.Looper.loopOnce(Looper.java:189)
	at android.os.Looper.loop(Looper.java:317)
	at android.app.ActivityThread.main(ActivityThread.java:8501)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)
	Suppressed: Z1.f: [androidx.compose.ui.platform.v0@18f24bd, I.g@e526ab2, j0{Cancelling}@d45da03, W@7ced80]

[Bug] <App manager> Android 12 中, 作为 Profile owner 时调用"禁止用户控制"功能将导致闪退

描述问题 / Describe the issue

当 OwnDroid 作为 Profile owner 被激活时, 如果尝试调用"应用管理"下的"禁止用户控制"功能 (无论目标应用包名设置为何) 将会导致 OwnDroid 意外闪退。

复现步骤 / Reproducing steps

  1. 为 OwnDroid 授予 Device admin 与 Profile owner (工作资料/机主/其他用户均可) 权限。
  2. 打开 OwnDroid。
  3. 进入"应用管理"。
  4. 输入一个已安装应用的包名, 单击下方"禁止用户控制"选项。
  5. OwnDroid 意外停止运行。

预期结果 / Expected result

根据错误日志内容分析, 似乎 Profile owner 下不支持此功能。此时 OwnDroid 应展现一个友好提示, 或直接隐藏该选项。

错误日志 / Logs

java.lang.SecurityException: Calling identity is not authorized
	at android.os.Parcel.createExceptionOrNull(Parcel.java:2426)
	at android.os.Parcel.createException(Parcel.java:2410)
	at android.os.Parcel.readException(Parcel.java:2393)
	at android.os.Parcel.readException(Parcel.java:2335)
	at android.app.admin.IDevicePolicyManager$Stub$Proxy.getUserControlDisabledPackages(IDevicePolicyManager.java:16106)
	at android.app.admin.DevicePolicyManager.getUserControlDisabledPackages(DevicePolicyManager.java:13462)
	at com.bintianqi.owndroid.dpm.ManagedProfileKt$$ExternalSyntheticApiModelOutline0.m(SourceFile:5)
	at com.bintianqi.owndroid.dpm.ApplicationManageKt.access$UserCtrlDisabledPkg(SourceFile:210)
	at com.bintianqi.owndroid.dpm.ApplicationManageKt$ApplicationManage$2$1$5$2.invoke(SourceFile:24)
	at com.bintianqi.owndroid.dpm.ApplicationManageKt$ApplicationManage$2$1$5$2.invoke(SourceFile:50)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:31)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:11)
	at androidx.compose.material3.ButtonKt$Button$3$1.invoke(SourceFile:43)
	at androidx.compose.material3.ButtonKt$Button$3$1.invoke(SourceFile:2)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:7)
	at androidx.compose.ui.Modifier$-CC.m(SourceFile:47)
	at androidx.compose.runtime.Updater.CompositionLocalProvider(SourceFile:76)
	at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SourceFile:162)
	at kotlin.TuplesKt.access$SaveableStateProvider(SourceFile:92)
	at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(SourceFile:4)
	at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(SourceFile:2)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:7)
	at androidx.compose.ui.Modifier$-CC.m(SourceFile:47)
	at androidx.compose.runtime.Updater.CompositionLocalProvider(SourceFile:28)
	at kotlin.TuplesKt.LocalOwnersProvider(SourceFile:60)
	at androidx.navigation.compose.NavHostKt$NavHost$14.invoke(SourceFile:432)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:31)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:11)
	at androidx.compose.foundation.text.TextFieldCursorKt$cursor$1.invoke(SourceFile:279)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:21)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:10)
	at kotlin.TuplesKt.AnimatedEnterExitImpl(SourceFile:840)
	at com.bintianqi.owndroid.PkgSelectorKt$PackageSelector$1.invoke(SourceFile:47)
	at com.bintianqi.owndroid.PkgSelectorKt$PackageSelector$1.invoke(SourceFile:1)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:7)
	at androidx.collection.ArraySetKt.AnimatedContent(SourceFile:1007)
	at kotlin.ResultKt.NavHost(SourceFile:303)
	at kotlin.ResultKt.NavHost(SourceFile:49)
	at com.bintianqi.owndroid.dpm.SystemManagerKt$CaCert$2$2.invoke(SourceFile:496)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(SourceFile:21)
	at androidx.compose.foundation.CanvasKt$Canvas$1.invoke(SourceFile:13)
	at androidx.compose.foundation.CanvasKt$Canvas$1.invoke(SourceFile:4)
	at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(SourceFile:518)
	at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(SourceFile:137)
	at androidx.compose.runtime.ComposerImpl.doCompose(SourceFile:157)
	at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(SourceFile:29)
	at androidx.compose.runtime.CompositionImpl.recompose(SourceFile:34)
	at androidx.compose.runtime.Recomposer.access$performRecompose(SourceFile:100)
	at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(SourceFile:518)
	at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(SourceFile:7)
	at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(SourceFile:48)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1118)
	at android.view.Choreographer.doCallbacks(Choreographer.java:926)
	at android.view.Choreographer.doFrame(Choreographer.java:854)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1105)
	at android.os.Handler.handleCallback(Handler.java:938)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:201)
	at android.os.Looper.loop(Looper.java:288)
	at android.app.ActivityThread.main(ActivityThread.java:8001)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1039)
	Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@dd0417b, androidx.compose.ui.platform.MotionDurationScaleImpl@5c18b98, StandaloneCoroutine{Cancelling}@b80eff1, AndroidUiDispatcher@467c7d6]

ColorOS 成功使用

Screenshot_2024-04-16-16-50-45-72_fc704e6b13c4fb26bf5e411f75da84f2.png

Screenshot_2024-04-16-16-50-32-51_cfb2bb30ca5583806d6e59637d60195d.png

目前我已经通过用mt管理器自签名该App实现了获取设备所有者(DeviceOwner)
参考帖子

[Feature Request] allow install cert on work profile

problem:
if i installing app that's need cert obviously it won't work but I can't install it on work profile meanwhile i need it there

solution:
pls add feature to install cert on work profile if possible thanks

[Bug] Error while installing apps in v5.5

在利用owndroid安装owndroid之后,再次安装其他应用会出现错误,安装界面弹出之后立刻闪回,不能进行正常安装,需要杀掉owndroid后台才能正常安装。

Crash on System manager Options

App crashes when I click on System manager > Options

FATAL EXCEPTION: main
Process: com.bintianqi.owndroid, PID: 11801
java.lang.SecurityException: Admin ComponentInfo{com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver} does not own the device
	at android.os.Parcel.createException(Parcel.java:1950)
	at android.os.Parcel.readException(Parcel.java:1918)
	at android.os.Parcel.readException(Parcel.java:1868)
	at android.app.admin.IDevicePolicyManager$Stub$Proxy.isBackupServiceEnabled(IDevicePolicyManager.java:9721)
	at android.app.admin.DevicePolicyManager.isBackupServiceEnabled(DevicePolicyManager.java:8842)
	at x1.V0.v(SourceFile:1)
	at x1.u0.c(SourceFile:176)
	at y.E.i(SourceFile:251)
	at x1.i2.q(SourceFile:736)
	at x1.g0.k(SourceFile:528)
	at Q.b.e(SourceFile:44)
	at Q.b.k(SourceFile:9)
	at E.z.m(SourceFile:390)
	at Q.b.m(SourceFile:52)
	at I.d.a(SourceFile:222)
	at R.h.f(SourceFile:162)
	at androidx.activity.result.d.q(SourceFile:90)
	at androidx.navigation.compose.o.m(SourceFile:75)
	at Q.b.m(SourceFile:52)
	at I.d.b(SourceFile:150)
	at androidx.activity.result.d.l(SourceFile:51)
	at androidx.navigation.compose.t.k(SourceFile:600)
	at Q.b.e(SourceFile:44)
	at Q.b.k(SourceFile:9)
	at C.y0.l(SourceFile:268)
	at Q.b.d(SourceFile:44)
	at Q.b.l(SourceFile:9)
	at androidx.compose.animation.a.a(SourceFile:1287)
	at r.c.m(SourceFile:273)
	at Q.b.m(SourceFile:52)
	at androidx.activity.result.d.i(SourceFile:927)
	at androidx.activity.result.d.n(SourceFile:1782)
	at androidx.navigation.compose.v.m(SourceFile:114)
	at I.r.M(SourceFile:517)
	at I.r.T(SourceFile:137)
	at I.r.q(SourceFile:161)
	at I.r.K(SourceFile:29)
	at I.x.v(SourceFile:35)
	at I.z0.t(SourceFile:123)
	at I.x0.n(SourceFile:513)
	at I.D.doFrame(SourceFile:14)
	at androidx.compose.ui.platform.V.doFrame(SourceFile:48)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:947)
	at android.view.Choreographer.doCallbacks(Choreographer.java:761)
	at android.view.Choreographer.doFrame(Choreographer.java:693)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
	at android.os.Handler.handleCallback(Handler.java:873)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:193)
	at android.app.ActivityThread.main(ActivityThread.java:6718)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
	Suppressed: d2.f: [I.m0@50051ea, androidx.compose.ui.platform.u0@f145cdb, i0{Cancelling}@c587378, W@ba7ea51]
Caused by: android.os.RemoteException: Remote stack trace:
	at com.android.server.devicepolicy.DevicePolicyManagerService.getActiveAdminForCallerLocked(DevicePolicyManagerService.java:2603)
	at com.android.server.devicepolicy.DevicePolicyManagerService.isBackupServiceEnabled(DevicePolicyManagerService.java:12003)
	at android.app.admin.IDevicePolicyManager$Stub.onTransact(IDevicePolicyManager.java:3764)
	at android.os.Binder.execTransact(Binder.java:731)

App version: 5.6
Android: 9
Model: Lenovo Tab4 8 plus

Profile owner permission is already given

dpm set-profile-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver

无法调用sui

设备没有安装shizuku,但是安装了sui,但是无法调用
设备环境:
MIUI PAD14.0.9
Ksu11682 LKM
IMG_20240419_165310.jpg

couldn't remove user id 10

after executing this command:

$ pm list users

Users:
UserInfo{0:HOME (Jay):c13} running
UserInfo{10:WORKPROFILE:1030} running

$ pm remove-user 10

Error: couldn't remove user id 10

[Feature enchantment] allow owner to disable or enable owndroid feature

problem:
there is dangerous feature on owndroid
(Wipe Data) this not funny if we accidentally click on it

please consider following solution:

  1. by default block or disable dangerous owndroid feature
  2. allow owner to block or disable owndroid feature that not needed

thanks for reading and considering developer 🙏

[Feature Request] Enchant permission manager

problem:
allowing permission is corcern me as privacy enthusiast it can make any app collect my data
(ex: call allow app to collect IMEI)
but in other hand some app might refuse to work if permission disabled
or i might need app in some situation

Please consider following solution:

  1. add bouncer one time permission
  2. add more condition to when permission is granted or denied

condition proposal:

  1. allow permission if app on foreground or background only
  2. allow permission only if app have task in background (ex: playing audio in background)

thanks for reading and consideration developer 🙏

Can't uninstall work profile

To be honest i installed this app without completely understand it's functionality...
But now i can see it created a new admin profile that cloned apps and made me unable to remove the profile nor application itself...
Kindly i need support to uninstall the app and profile.
Thank in advance

[Feature Request] Custom installer

Something that I liked was the possibility of installing applications silently, without confirmation from the package installer. I've used it a lot, is there any plan to make the app be set as the default installer?

[Feature Request] Publish OwnDroid to F-Droid

Thanks for your amazing app, but we know, Device owner privilege could be more dangerous than root, (as per the README of this project). It would be better, more safe, and more convenient, if users can install your app in F-Droid.

F-Droid is an open source software App Market. All apps in F-Droid official repo are compiled and signed by F-Droid, thus installing apps from F-Droid is safe and can be blindly trusted.

Here is the guide of how to include the app in F-droid.

Thanks!

[Invalid / Documentation] The activation command in Guide.md seems to be incorrect

Describe the issue

There seems to be a small issue in the Guide.md: the activation command for Device Admin / Profile Owner / Device Owner is incorrect. In Guide.md, the activation command for Device Admin / Profile Owner / Device Owner is written as adb shell dpm set-(active-admin || profile-owner || device-owner) com.binbin.androidowner/com.binbin.androidowner.MyDeviceAdminReceiver. In fact, the receiver com.binbin.androidowner.MyDeviceAdminReceiver is not registered. Users executing the wrong activation command will receive an error, which could lead to some confusion.

Expected result

The correct receiver should be com.binbin.androidowner.dpm.MyDeviceAdminReceiver (as it is displayed within the app). Therefore, the activation command should be updated to adb shell dpm set-(active-admin || profile-owner || device-owner) com.binbin.androidowner/com.binbin.androidowner.dpm.MyDeviceAdminReceiver instead.

Owndroid Spanish translation

Greetings

I am currently translating Owndroid strings (English) into Spanish. This is longer than I expected so it will take a few days (because of other occupations) but, I will finish them. I have advanced in translating almost half of the strings. I think being translated into several languages will help in the visibility of the app, so I will do my part n.n

[Feature Request] Automation Integration

Does it support Tasker plugin API, so that I can use it in tasker?
Or does it support shortcuts? So I can add shortcuts to desktop or other apps that supports running a shortcut?
So I can automate the available actions in this app.

[Feature Request] Permissions

Me again. For these permissions pictured here, are they revoked just because it's not a trusted app like if it was Knox or some other mdm app or is there something missing in the manifest? I'm just curious if we can add anything in particular to the manifest for elevated privileges like "android.uid.system". Basically I'd like to actually run this as system like it says "system user: true" in the user info section. Being able to integrate a debug version to utilize run-as would be great too. I know it's probably a lot and don't worry about it if you're not able to. I don't have enough knowledge to try "modding" it myself and if I did it would be just for me but would always give credit if I figured something out anyways. Again, please don't take any of that the wrong way and if it's any trouble just let me know. Thank you!
Screenshot_20240507_094804_AM Debug

[Feature Request] Lock task

在testdpc中,有个Lock tesk的功能,可以很快固定应用,希望能加这个功能
(主要原因是testdpc太耗cpu了,打个dax模块就卡的要命,不好用
(加功能后兼不兼容dax我不强求,能多一个希望就行了💦💦💦

[Feature Request] 为 OwnDroid 添加启动时 PIN 锁

Describe the issue / 描述问题

OwnDroid 功能涉及 Device owner 等高权限的操作, 部分情况下未经授权的操作可能导致危险。

Expected implementation / 预期实现

允许用户在 OwnDroid 内设置 PIN 码 / 解锁手势, 置于后台超过指定时间 / 应用重启后自动锁定。

FAQ / 疑问解答

Q: 现在国内系统不是都自带应用锁功能嘛?

A: 类原生用户应该还是不少的吧... (Lineage 除外, 启动器自带应用锁) 以及海外 UI 也基本上没有应用锁功能。

删除工作资料的功能来的太迟了

两天前我想双开个软件,但是接管了设备所有者权限就不可以双开,然后我就取消了设备所有者。然后就新出了个工作资料的窗口,我就创建了工作资料,但默认由组织接管的。但是问题来了,我想取消发现删除不掉工作资料了,系统设置那里的删除工作资料显示被it管理员禁用。然后我就在软件里找,但是根本就没有删除工作资料的入口。教程文档也没有写怎么删除工作资料。(此时我还不知道用adb可以删除工作资料)后来我看就有个清楚数据,当时好像是写的是此操作在开启工作资料里使用可以删除工作资料。我以为只是会删除工作资料的所有数据,没想到是删除设备的所有数据。所以就完蛋了……
如今删除工作资料终于来了,可惜来迟了😭😭😭 提个建议,在清楚数据那里加些提示,和二次确认的这样子尤其是静默删除。Screenshot_2024-07-19-11-08-02-27_df198e732186825c8df26e3c5a10d7cd.png

Screenshot_2024-07-19-11-09-17-27_df198e732186825c8df26e3c5a10d7cd.png

[Feature Request] Reset all setting after deactivating

problem:
setting isn't resetted to default or previous value when owndroid deactivated this can become big problem
(ex: you forgot which app that restricted to being uninstalled)

Please Consider following solution:

  1. reset all setting to default if deactivated
  2. maybe add ability to backup all setting?

thanks for reading and considering developer 🙏

Delete Owndroid

I'm having trouble deleting owndroid because I can't delete owndroid's work profile, I'm on Xiaomi device

[Feature Request] Support all third party DPC API

problem:
you can't have more than 1 device owner apps despite how many apps need it

Please consider following solution:
add support for using others app devices owner privilege not only limited to Dhizuku but at least almost all devices owner app if possible

reference:
Island Open API
Insular Open API

note:
ik and aware this is duplicate issues i just try to make refresh version of it
thanks for reading and consideration developer 🙏

[Feature Request] Improve permission selection

在进行权限管理的时候,选择了某个应用程序的某权限,如果快速选择权限(就是在第一张图的界面Screenshot_2024-07-23-14-49-25-38_27f98cbba1c8b4f3dede46a209e2dd0a.png

快速点击两次某权限)就必定会退回到owndroid主界面,这是一个bug。

另外希望大大改一下权限管理的ui,Screenshot_2024-07-23-14-49-25-38_27f98cbba1c8b4f3dede46a209e2dd0a.png

如果改成进入权限管理就是这个页面,然后点击权限就可以进行默认允许解决三个选项的操作会方便很多,像这个样子Screenshot_2024-07-23-14-55-02-48_3ddfc6ffaa21e6a18dca37b5b72fe931.png

另外还有个问题就是某些权限好像不能修改,点击没有效果,比如说身体传感器

Crash on deactivating Profile owner

Steps to reproduce :

  • Give profile owner permission by
    dpm set-profile-owner com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver
  • Now.simply click on "Deactivate" from the app UI
  • It gets deactivated but at the same time app crahses

Logs:

FATAL EXCEPTION: main
Process: com.bintianqi.owndroid, PID: 17239
java.lang.SecurityException: No active admin ComponentInfo{com.bintianqi.owndroid/com.bintianqi.owndroid.Receiver}
	at android.os.Parcel.createException(Parcel.java:1950)
	at android.os.Parcel.readException(Parcel.java:1918)
	at android.os.Parcel.readException(Parcel.java:1868)
	at android.app.admin.IDevicePolicyManager$Stub$Proxy.isManagedProfile(IDevicePolicyManager.java:8920)
	at android.app.admin.DevicePolicyManager.isManagedProfile(DevicePolicyManager.java:7974)
	at F0.b.x(SourceFile:1)
	at com.bintianqi.owndroid.F0.l(SourceFile:147)
	at Q.b.d(SourceFile:44)
	at Q.b.l(SourceFile:9)
	at androidx.compose.animation.a.a(SourceFile:1287)
	at G.n.m(SourceFile:51)
	at I.r.M(SourceFile:517)
	at I.r.V(SourceFile:29)
	at androidx.compose.animation.a.d(SourceFile:139)
	at androidx.compose.animation.a.c(SourceFile:310)
	at x1.U.U(SourceFile:468)
	at x1.X.k(SourceFile:22)
	at Q.b.e(SourceFile:44)
	at Q.b.k(SourceFile:9)
	at E.z.m(SourceFile:390)
	at Q.b.m(SourceFile:52)
	at I.r.M(SourceFile:517)
	at I.r.V(SourceFile:29)
	at R.h.f(SourceFile:68)
	at androidx.activity.result.d.q(SourceFile:90)
	at androidx.navigation.compose.o.m(SourceFile:75)
	at Q.b.m(SourceFile:52)
	at I.d.b(SourceFile:150)
	at androidx.activity.result.d.l(SourceFile:51)
	at androidx.navigation.compose.t.k(SourceFile:600)
	at Q.b.e(SourceFile:44)
	at Q.b.k(SourceFile:9)
	at C.y0.l(SourceFile:268)
	at Q.b.d(SourceFile:44)
	at Q.b.l(SourceFile:9)
	at androidx.compose.animation.a.a(SourceFile:1287)
	at r.c.m(SourceFile:273)
	at Q.b.m(SourceFile:52)
	at androidx.activity.result.d.i(SourceFile:927)
	at androidx.activity.result.d.n(SourceFile:1782)
	at androidx.activity.result.d.m(SourceFile:47)
	at x1.g1.l(SourceFile:305)
	at Q.b.d(SourceFile:44)
	at G.v1.m(SourceFile:158)
	at I.r.M(SourceFile:517)
	at I.r.T(SourceFile:137)
	at I.r.q(SourceFile:161)
	at I.r.K(SourceFile:29)
	at I.x.v(SourceFile:35)
	at I.z0.t(SourceFile:123)
	at I.x0.n(SourceFile:513)
	at I.D.doFrame(SourceFile:14)
	at androidx.compose.ui.platform.V.doFrame(SourceFile:48)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:947)
	at android.view.Choreographer.doCallbacks(Choreographer.java:761)
	at android.view.Choreographer.doFrame(Choreographer.java:693)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
	at android.os.Handler.handleCallback(Handler.java:873)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:193)
	at android.app.ActivityThread.main(ActivityThread.java:6718)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
	Suppressed: d2.f: [I.m0@5b3d63c, androidx.compose.ui.platform.u0@740afc5, i0{Cancelling}@3770d1a, W@bcab04b]
Caused by: android.os.RemoteException: Remote stack trace:
	at com.android.server.devicepolicy.DevicePolicyManagerService.getActiveAdminWithPolicyForUidLocked(DevicePolicyManagerService.java:2656)
	at com.android.server.devicepolicy.DevicePolicyManagerService.getActiveAdminForCallerLocked(DevicePolicyManagerService.java:2593)
	at com.android.server.devicepolicy.DevicePolicyManagerService.enforceProfileOrDeviceOwner(DevicePolicyManagerService.java:5197)
	at com.android.server.devicepolicy.DevicePolicyManagerService.isManagedProfile(DevicePolicyManagerService.java:11182)
	at android.app.admin.IDevicePolicyManager$Stub.onTransact(IDevicePolicyManager.java:3237)

Device details:

  • App version: 5.6
  • Android: 9
  • Model: Lenovo Tab4 8 plus

App lock

Sir,
Can you please introduce the feature of applying app lock with password on any android app with the help of permission of device owner.
As i am using the older version of android,i don't have the feature of app lock on my device.
Please, look into it for me.

[Feature Request] <UI> Improve UI design

前情提要 / Backlog

UI Issue

功能需求 / Feature Detail

OwnDroid 当前的 UI 设计存在改进空间, 具体如下:

  • OwnDroid 首页的标题、激活状态, 子页面的标题 与屏幕两侧的间距不足, 导致看起来缺乏对齐感。
  • 部分页面内文本内容同样需要增加间距, 例如 关于 页面 与 安全 页面。
  • 设置子页面的 Switch 右侧间距未与条目左侧 Icon 与边缘间距保持一致。
  • 动画流畅度不足, 且部分情况下快速切页会导致动画出现 Bug。
  • 建议在首页的每个按钮底部模仿安卓原生设置, 用灰色小字列举出该设置类型中的一些典型功能。
  • 优化部分页面的纯文本展示, 例如 激活状态 - 设备信息, 密码与锁屏 - 密码信息。可以将纯文本分行显示, 顶部显示标题, 底下灰字显示内容。并在左侧添加相关图标。
  • 纯文本内容为 true / false 的换用 √ 和 × 图标显示。
  • 部分设置页面内的元素未对齐, 例如 Radio List 与 Button / Text / Input 完全没有对齐。
  • 应用选择器 单个应用上下间距不足。
  • 应用选择器可以添加搜索应用的功能。(题外话)
  • 建议权限选择器在每个权限的左侧添加对应图标, 参考 AppOps。
  • 停用 Device Owner 前展示警告弹窗, 让用户确认是否已还原更改, 并且是否确实要停用。(题外话)
  • 首页增加搜索设置项的功能。(题外话)

app crash when I click to open password complexity

Hello! I'm experiencing app crash when I click to open password complexity in the settings for key guard and password. I have a Z Fold5 using Android 14 at a 34 API level with One UI 6.1 as my UI and I've used Shizuku to gain most of my privileged access so far and I'd like for your app to give me a little more access. Thanks for any help or feedback you can give me!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.