Giter Club home page Giter Club logo

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 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  avatar

owndroid's Issues

Delete Owndroid

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

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]

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!

[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!

无法调用sui

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

[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.

[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]

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

Device Management

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

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!

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

Describe the issue / 描述问题

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

Expected implementation / 预期实现

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

FAQ / 疑问解答

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

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

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.

[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

[Feature Request] Support third-party Device Owner API

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

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: 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?

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

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] Lock task

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

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.