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应用程序也不能被自定义应用程序取代。
发布于 2017-04-23 23:50:22
我试图在锁定模式下启动呼叫意图,结果弹出了这行:
system_process E/ActivityManager: Attempted Lock Task Mode violation mStartActivity=ActivityRecord{56ab302 u0 com.android.server.telecom/.components.UserCallActivity t155}所以我补充说
setLockTaskPackages(<ComponentName>,new String[]{getPackageName(),"com.google.android.dialer","com.android.server.telecom"});设法把拨号器弄出来了。当然,如果我按下home键或back键,就没有办法让拨号器回来……不过,“最近”按钮仍然处于锁定状态。接听电话工作正常(所有按钮均禁用)
发布于 2017-04-23 18:58:22
你试过这个吗?
setLockTaskPackages(new ComponentName(this, DeviceAdminReceiver.class),new String[]{getPackageName(),"com.google.android.dialer"});https://stackoverflow.com/questions/41806416
复制相似问题