首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Locktask模式下的调用

Android Locktask模式下的调用
EN

Stack Overflow用户
提问于 2017-01-23 20:29:14
回答 2查看 3.2K关注 0票数 2

TL;DR如何在使用Activity.startLockTask()时拨打电话

我正在尝试在Android设备上设置一个受限环境,也就是通常所说的"Kiosk-Mode“。

官方文档可在此处找到:https://developer.android.com/work/cosu.html

官方建议使用Activity.startLockTask

这很好用,除非你想在startLockTask()模式下的Activity中启动其他应用程序。任何启动的活动都不能在新的任务堆栈上启动,否则系统会阻止启动意图,即没有Intent.FLAG_ACTIVITY_NEW_TASK

一些应用程序可以直接启动,其他应用程序似乎隐含地设置了这个标志,但是可以通过使用似乎删除了NEW_TASK标志的startActivityForResult(...)来解决。对于仍然不能工作的应用程序,我可以编写自己的替代程序。

真正的问题是调用应用程序,它强制执行新的任务堆栈。触发呼叫发起呼叫,不会显示呼叫活动,但还会在状态栏中显示呼叫通知(使用startLockTask()时在中无法访问。与其他应用程序不同的是,call应用程序也不能被自定义应用程序取代。

DevicePolicyManager.html.setLockTaskPackages()对此行为没有影响。

EN

回答 2

Stack Overflow用户

发布于 2017-04-23 23:50:22

我试图在锁定模式下启动呼叫意图,结果弹出了这行:

代码语言:javascript
复制
    system_process E/ActivityManager: Attempted Lock Task Mode violation mStartActivity=ActivityRecord{56ab302 u0 com.android.server.telecom/.components.UserCallActivity t155}

所以我补充说

代码语言:javascript
复制
    setLockTaskPackages(<ComponentName>,new String[]{getPackageName(),"com.google.android.dialer","com.android.server.telecom"});

设法把拨号器弄出来了。当然,如果我按下home键或back键,就没有办法让拨号器回来……不过,“最近”按钮仍然处于锁定状态。接听电话工作正常(所有按钮均禁用)

票数 3
EN

Stack Overflow用户

发布于 2017-04-23 18:58:22

你试过这个吗?

代码语言:javascript
复制
setLockTaskPackages(new ComponentName(this, DeviceAdminReceiver.class),new String[]{getPackageName(),"com.google.android.dialer"});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41806416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档