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

2024-03-26

我们正在开发一款 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 Management API 参数,例如persistentPreferredActivities or delegatedScopes。现在,我们认为最好的选择是尝试添加com.android.server.telecom到 locktask 白名单,如下所示:

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 包,但同样没有成功。

任何帮助将不胜感激。


首先,感谢您在 Sof 中将这个问题作为一个新问题提出(正如所讨论的),以便其他开发人员可以做出贡献,并且它可能会在未来帮助其他人。

我对您的解决方案和应用程序有疑问...为什么不选择连接服务 https://developer.android.com/reference/android/telecom/ConnectionService作为自我管理的应用程序,因此您将无需成为系统中的默认电话应用程序,并且您将能够使用自己的自定义 Ui 而不是 CallUi 中的默认系统。

另外一点,安装在完全托管和专用设备上的 DPC 称为设备所有者 https://developers.google.com/android/work/terminology#device_owner_do并且设备所有者仅在首次安装设备时设置,而不是稍后设置(使用 Nfc 或 QrCode 配置)。

另外一点是,“设备管理员”不是设备所有者,并且不再支持设备管理 https://developers.google.com/android/work/device-admin-deprecation所以这个解决方案也无济于事。

我不熟悉 Android Management API,但只是找到这个:将自助服务终端应用程序链接到其他应用程序 https://developers.google.com/android/management/policies/dedicated-devices#kiosk_mode.

"applications": [
{
"packageName": "com.example.app",
"installType": "KIOSK",
"defaultPermissionPolicy": "GRANT"
},
{
"packageName": "com.google.android.dialer",
"installType": "FORCE_INSTALLED",
"defaultPermissionPolicy": "GRANT"
},
{
"packageName": "com.android.server.telecom",
"installType": "FORCE_INSTALLED",
"defaultPermissionPolicy": "GRANT"
}
]

请告诉我这是否对你有用,谢谢

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当应用程序处于信息亭模式时拨打电话 的相关文章

  • IE8 和怪异模式

    IE8 是否像 IE6 7 一样以怪异模式运行 我有一个网页 其中有一些非常奇怪的代码 内容以填充和负边距居中 它在 IE6 7 和其他浏览器中可以正常工作 但在 IE8 中 内容区域的宽度只有一半并且不居中 怪异模式的标志 源代码在 DO
  • F# 正确使用序列缓存

    我正在尝试将 Seq cache 与我制作的函数一起使用 该函数返回最多为 N 的素数序列 不包括数字 1 我无法弄清楚如何将缓存的序列保留在范围内 但仍然使用它在我的定义中 let rec primesNot1 n 2 n gt Seq
  • 别名在 Bash 脚本中不起作用[重复]

    这个问题在这里已经有答案了 我有一个可执行文件command sh bin bash alias my command echo ok my command 我的终端是bash 当我像这样运行时 command sh 效果很好 当我像这样运
  • 蓝牙 LE 中步数计数的服务和特性是什么?

    低功耗蓝牙中步数的服务 特征值 UUID 是什么 蓝牙文档的相应页面没有列出任何步骤 如何计算步数 计步设备是否使用跑步速度和步频服务 谢谢 有些设备确实使用跑步速度和节奏服务 您应该能够通过将 总距离 除以 瞬时步长 两者都可以在RSC测
  • 从 Ruby 运行 shell 命令:在显示输出时捕获输出?

    我有个问题 我想从另一个 ruby 脚本运行一个 ruby 脚本并捕获它的输出信息 同时让它也输出到屏幕上 runner usr bin env ruby print Enter your password password gets ch
  • 用于将用户发送至设备应用商店上的应用评论页面的 URL

    为了将 iTunes App Store 置于最前面并打开它以显示应用程序的评论页面 要启动的 URL 是什么 我想将我的用户发送到 撰写评论 页面 其他一些 SO 答案提供了如下 URL 但它似乎不起作用 itms apps itunes
  • 如何在服务器上获取球衣日志?

    我正在使用球衣进行 REST WS 如何在服务器端启用球衣日志 很长的故事 我收到客户端异常 但我在 tomcat 日志中没有看到任何内容 它甚至没有到达我的方法 由于堆栈跟踪显示 toReturnValue 它确实从服务器获取了一些内容
  • Elastic Beanstalk、Bundler 找不到 gem“bundler”的兼容版本

    我已经尝试过将 Elastic Beanstalk 用于 Rails 当我运行 eb deploy 时出现此错误 我需要至少安装bundler 1 8 4 知道如何解决这个问题吗 Bundler could not find compati
  • Angular2排序数组用于在html中的*ngFor中显示

    我正在循环浏览所有帖子 li 当显示每个帖子的日期时 我会执行以下操作 post date date yyyy MM dd HH mm ss 我想要做的是按最新的第一个顺序显示所有帖子 我尝试过使用类似的管道 li li import Pi
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac
  • 列表框:添加组合框作为项目?

    是否可以将列表框的每个项目都作为组合框 我需要这个 因为我将列表框设置为可检查 然后我需要让用户从列表中每个元素的不同选项中进行选择 Thanks 如果您不打算分发您的应用程序 那么您还可以查看 TreeView 控件 请参阅此示例 COD
  • 如何测试send_file烧瓶

    我有一个小型烧瓶应用程序 它需要上传一些图像并将它们转换为多页 tiff 没什么特别的 但是如何测试多个文件的上传和文件下载呢 我的测试客户端 class RestTestCase unittest TestCase def setUp s
  • 为什么 as.character() 返回日期列表中的整数?

    我惊讶地发现 R 中出现以下行为 as character c Sys Date gt 1 2018 02 05 as character list Sys Date gt 1 17567 为什么会出现这种情况 也就是说 显然 17567
  • 如何在不显示父活动的情况下将一个全屏对话框片段替换为另一个全屏对话框片段?

    我有一个使用单个自定义 DialogFragment 类的活动 它的外观是数据驱动的 因此不同的调用看起来可能相当不同 它是 全屏 即 setStyle DialogFragment STYLE NO FRAME android R sty
  • Vuex store.watch 只接受 Vue routerguard 中的函数

    我正在尝试观察并等待 Vue 路由器防护从 Vuex 获取最终值 但它会抛出异常 vuex store watch 只接受一个函数 这是代码 const isAdmin get store getters user isAdmin unde
  • Apache Flink - “keyBy”中的异常处理

    由于代码错误或缺乏验证 进入 Flink 作业的数据可能会触发异常 我的目标是提供一致的异常处理方式 我们的团队可以在 Flink 作业中使用这种方式 而不会导致生产中出现任何停机 重启策略似乎不适用于此处 因为 简单的重启无法解决问题 我
  • 在哪里放置资源特定逻辑

    您能帮我考虑在 AngularJS 中将资源 服务 特定的业务逻辑放置在哪里吗 我觉得在我的资源上创建一些类似模型的抽象应该很棒 但我不确定如何做 API调用 gt GET customers 1 lt first name John la
  • 创建进程默认浏览器

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 我想获取线程 id 因此 ShellExecute 无法获取线程 id 因此我开始使用
  • 如何循环遍历颜色数组以更改按键背景(按下/向下)

    互联网 如果这与其他人没有什么关系 请原谅我 但我会将其留在这里 以防这是一个有效的问题 我正在尝试创建一个文本区域字段 其中用户每次按下键 a z 都会触发背景颜色更改 在数组中列出 我一直在用 JQuery 做这件事 我想我已经很接近了
  • 如何根据当前日期时间发现财政年度?

    我需要基于当前或今天的日期时间的财政年度 假设我们认为今天的日期是10 April 2011 那么我需要输出为Financial Year 2012在某些情况下 我需要以短格式显示相同的输出FY12 我想以两种方式显示 在我们的要求中 考虑

随机推荐

  • @include 容器是什么意思?

    我正在开始使用 Compass 和 Susy 我的目标是让我的布局适应手机 平板电脑和桌面屏幕尺寸 在 Susy 的例子中 susy oddbird net http susy oddbird net guides reference re
  • Linux(或 RedHat Linux)上的小块分配器以避免内存碎片

    我知道有一个用于用户应用程序的分配器 可以处理 HP UX 上的大量小块分配链接文本 http docs hp com en B9106 90010 malloc 3C html在 Windows XP 上低碎片堆 http msdn mi
  • C# - 如何从集合视图中获取不同的项目

    CollectionView view CollectionView CollectionViewSource GetDefaultView MyData View Filter i gt MyClass i MyProperty 我有一个
  • iOS:UDID 已弃用...MAC 地址?

    据我们所知 Apple 不赞成开发者访问 UDID 但据我所知 可以获得 iDevice 的 MAC 地址 那么有什么区别呢 MAC地址和UDID都是硬件的唯一标识符 与应用程序无关 UDID 和 MAC 地址之间的一些明显差异 可以想象
  • Emacs 读取大文件 ~14GB [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 最近我在我的系统上下载了 emacs 来编辑大文件 正如它声称的那样 当尝试打开大文件时 emacs 给我带来了缓冲区大小超出的问题 有办法增加吗 我
  • 使用Android模拟器进行远程调试

    是否可以在一台机器上编写代码 编译 Android 应用程序并在另一台机器上启动的模拟器上远程调试它 我厌倦了模拟器不断地占用我笔记本电脑一半的 CPU 我以前没有尝试过 甚至没有注意到 adb connectcmb 提到的命令 但我可以确
  • 修复了 IOS 上位置延迟的问题

    当我在 iPad 上测试了我的网站上的 affix 后 我发现它无法正常工作 我惊讶地发现这是 iOS 的问题https github com twbs bootstrap issues 11560 https github com twb
  • Android 中的 ImageView 内容是否有工具属性?

    我找不到tools属性以在 Android 布局中设置示例图像 我的假设是目前没有这样的事情 至少没有direct支持 但我想知道是否我搜索得不够好或者是否有解决方法 如何在 Android 设计时定义图像占位符tools 的例子tools
  • 使用 barsince(change(strategy.position_size)) > 10 时输入不起作用

    我的脚本中有一个奇怪的问题 这是工作代码 version 4 strategy Test script overlay true pyramiding 100 process orders on close true FACTOR 1X M
  • 使用 jQuery 检索和修改 :before 元素

    我想选择一个由 CSS 选择器创建的元素 before 我尝试使用 element before 但这不起作用 因为它选择了整个元素 而不仅仅是 before元素 这是示例代码 DEMO http jsfiddle net qGStB 在该
  • 无法在 Mac 上的 Genymotion 模拟器上运行 telnet 命令

    我在 Mac OS X Yosemite 上运行 Genymotion 2 3 1 当我在 Win 7 上运行 Genymotion 时 我可以远程登录到模拟器并运行 geo fix 等命令来设置位置 但是 在 Yosemite 上 当我远
  • 在 Excel 中单击时,超链接从 # 更改为 %20-%20 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Excel 2013 工作表中有一个链接到内部网站的超链接 当我右键单击并选择 编辑超链接 时 我在地址栏中看到以下内容 这是正确的
  • 饥饿与upgrade_lock

    我正在尝试使用Boostupgrade lock using 这个例子 https stackoverflow com questions 989795 example for boost shared mutex multiple rea
  • 在 Angular 2 中使用 Sass

    我正在尝试设置Sass in my Angular 2项目 基本上据我了解 有两种方法可以创建 Angular 2 项目 1 使用angular cli https github com angular angular cli https
  • 用 pandas 计算指数移动平均线

    我尝试用 pandas 计算 ema 但结果不好 我尝试了两种技术来计算 第一个技术是panda的函数ewn window 100 c 2 float window 1 df 100ema df close ewm com c mean 但
  • 如何制作Maven项目的“胖罐子”? [复制]

    这个问题在这里已经有答案了 使用 IntelliJ 我刚刚创建了一个新的 Maven 项目并将以下内容添加到 pom 文件中http undertow io downloads html http undertow io downloads
  • 我应该在 FluentValidation 中创建一个新的集合类型吗?

    我试图找到 FluentValidation 中是否有可用的方法 允许在根级别验证集合的验证器 例如如下所示 验证器可用于CustomerValidator为一堂课Customer 使用 FluentValidation public cl
  • 使用配置文件并行执行 FirefoxDriver 测试共享相同的配置文件副本

    一段时间以来 我们一直在使用 FirefoxDriver 执行一组基于 WebDriver 2 25 0 的自动化测试 测试由基于 Maven 3 0 的构建及其 FailSafe 插件并行执行 四核机器上每个核心 2 个线程 每个测试都有
  • 获取标签内的所有节点

    我有这样的代码 div Lorem ipsum dolor sit amet p This is a paragraph p br span This is a span span Lorem ipsum dolor sit amet di
  • 当应用程序处于信息亭模式时拨打电话

    我们正在开发一款 Android 应用程序 旨在取代默认的 Android 拨号器并自行处理设备中正在进行的所有呼叫 到目前为止 该应用程序按预期工作 我们可以通过启动来处理来电和拨打电话ACTION CALL意图 但是 此应用程序旨在通过