V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
magic3584
V2EX  ›  Android

请教 android 大佬,怎么让 app 适配 DevicePolicyManager

  •  
  •   magic3584 · 338 天前 · 7302 次点击
    这是一个创建于 338 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前有个 flutter app 运行在 android 设备上,但是需要不能手势退出 app (只能主动点按钮退出)

    搜索到 flutter 插件( https://pub.dev/packages/kiosk_mode) 但是只是进入了 pin screen 模式

    看 README 里有一句话:

    If DevicePolicyManager#isLockTaskPermitted(String) returns true for this component, the current task will be launched directly into LockTask mode.

    由于我不会 android 开发,特来请教大佬怎么实现

    8 条回复    2024-01-23 21:41:50 +08:00
    learnshare
        1
    learnshare  
       338 天前
    为啥要干扰系统级的操作
    不想退出,就弹出窗口再确认一下
    magic3584
        2
    magic3584  
    OP
       338 天前
    @learnshare #1
    就是类似一个控制的 app ,不能主动退出
    XXWHCA
        4
    XXWHCA  
       338 天前
    @learnshare 这些是面向企业场景的 api ,例如演示大屏,或者电梯广告这种场景,不允许用户退出 app
    magic3584
        5
    magic3584  
    OP
       338 天前
    @XXWHCA #3
    大佬,经过我一阵捣鼓,功能是实现了,但是有个问题,我 app 无法卸载了。。。
    起因是我用 chatGPT 帮我写了个类 https://github.com/magic3584/API/blob/master/DeviceOwnerUtil.kt (里面 clear 是我写的但是没生效。。。)
    然后如下调用
    ``` kotlin
    class MainActivity: FlutterActivity() {
    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
    super.onCreate(savedInstanceState, persistentState)
    DeviceOwnerUtil.setDeviceOwner(this);
    // DeviceOwnerUtil.clearDeviceOwner(this)
    }
    }
    ```
    然后发现先是无法停止
    adb shell dpm remove-active-admin com.xxx/.AdminReceiver

    Exception occurred while executing 'remove-active-admin':
    java.lang.SecurityException: Attempt to remove non-test admin ComponentInfo{com.xxx/com.xxx.AdminReceiver} 0

    后来发现又无法卸载
    ➜ Desktop adb shell pm uninstall com.xxx
    Failure [DELETE_FAILED_INTERNAL_ERROR]

    pad 上 app 的“卸载”和“强行停止”都是灰的。。。

    真是喜闻乐见。。。
    XXWHCA
        6
    XXWHCA  
       338 天前
    @magic3584 到设备管理器里找到你的 app ,禁用它,然后再卸载
    XXWHCA
        7
    XXWHCA  
       338 天前
    @magic3584 不太确定是不是设备管理器里启用导致无法卸载掉,我记得设备管理器是需要手动到设置里开启的,通过调用 API 应该是无法修改的
    magic3584
        8
    magic3584  
    OP
       337 天前
    @XXWHCA #6
    感谢大佬,
    设置里无法停用,最后只能恢复出厂设置了。。。
    不知道怎么就搞成这样了😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5625 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 03:22 · PVG 11:22 · LAX 19:22 · JFK 22:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.