应用程序处于信息亭模式时拨打电话

问题描述

我们正在开发一个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参数,例如persistentPreferredActivitiesdelegatedScopes。目前,我们认为最好的选择是尝试将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 (将#修改为@)