rrubick
V2EX  ›  Android

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

  •  
  •   rrubick · Jan 22, 2024 · 10953 views
    This topic created in 856 days ago, the information mentioned may be changed or developed.

    目前有个 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 replies    2024-01-23 21:41:50 +08:00
    learnshare
        1
    learnshare  
       Jan 22, 2024
    为啥要干扰系统级的操作
    不想退出,就弹出窗口再确认一下
    rrubick
        2
    rrubick  
    OP
       Jan 22, 2024
    @learnshare #1
    就是类似一个控制的 app ,不能主动退出
    XXWHCA
        4
    XXWHCA  
       Jan 22, 2024
    @learnshare 这些是面向企业场景的 api ,例如演示大屏,或者电梯广告这种场景,不允许用户退出 app
    rrubick
        5
    rrubick  
    OP
       Jan 22, 2024
    @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  
       Jan 23, 2024
    @magic3584 到设备管理器里找到你的 app ,禁用它,然后再卸载
    XXWHCA
        7
    XXWHCA  
       Jan 23, 2024
    @magic3584 不太确定是不是设备管理器里启用导致无法卸载掉,我记得设备管理器是需要手动到设置里开启的,通过调用 API 应该是无法修改的
    rrubick
        8
    rrubick  
    OP
       Jan 23, 2024
    @XXWHCA #6
    感谢大佬,
    设置里无法停用,最后只能恢复出厂设置了。。。
    不知道怎么就搞成这样了😂
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5693 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 02:05 · PVG 10:05 · LAX 19:05 · JFK 22:05
    ♥ Do have faith in what you're doing.