问题描述
我们正在开发一个Android应用,该应用旨在替换默认的Android拨号器,并自行处理设备中正在进行的所有呼叫。到目前为止,该应用程序可以正常运行,并且我们能够通过启动ACTION_CALL
意图来处理来电和拨打电话。
但是,此应用旨在通过Android Management API在信息亭模式下运行。每当我们触发ACTION_CALL
意图时,信息亭模式都会阻止它,尽管该应用程序已设置为默认拨号程序。
经过一些调试后,我们发现问题是,在启动意图时,在我们的应用收回请求的控制之前,系统会尝试启动com.android.server.telecom/.components.UserCallActivity
。由于我们的应用以信息亭模式运行,因此在logcat
中出现以下错误:
10-25 20:29:44.560 1186 3677 E ActivityTaskManager: Attempted Lock Task Mode violation mStartActivity=ActivityRecord{e45f03 u0 com.android.server.telecom/.components.UserCallActivity t24}
我们尝试了不同的解决方法,但似乎没有一个起作用。我们已经弄乱了Android Managment API参数,例如persistentPreferredActivities
或delegatedScopes
。目前,我们认为最好的选择是尝试将com.android.server.telecom
添加到锁定任务白名单中,如下所示:
var dpm = (DevicePolicyManager)MainActivity.GetSystemService(Context.DevicePolicyService);
if (dpm.IsDeviceOwnerApp(MainActivity.PackageName)){
dpm.SetLockTaskPackages(XXX,new[] { MainActivity.PackageName,"com.android.server.telecom"})
}
,但是这种方法需要将我们的应用设置为设备管理员,只要我们使用的是Android Management API,我们就无法知道是否可以实现。我们还尝试过直接调用DPC程序包,但再次失败。
任何帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)