更新 COSU 设备中的 Android 应用程序

2024-02-13

我正在从事应用程序支持工作COSU 应用程序 Android https://developer.android.com/work/cosu.html。该应用程序对我来说运行良好,但我不明白用户将如何更新我们的应用程序,因为 COSU 应用程序用户无法访问任何其他应用程序,甚至无法访问 Google Play 商店。所以现在的问题是用户如何在没有 google play 访问权限的情况下更新我们的应用程序。 我有一个从我们的服务器下载解决方案的应用程序,但在这种情况下,用户将丢失保存数据,例如我们存储在 SharedPreference 中的数据。如果您有任何其他解决方案,请指导我。提前致谢


根据谷歌的文档COSU https://developers.google.com/android/work/requirements/cosu(Google Play 应用程序管理),可以“使用 Play EMM API 安装、更新和卸载应用程序”。在“Google 托管的私人应用程序管理”下,它描述了通过 Play 托管用户可以安装/更新的私人应用程序的功能:

简化 Google 托管的私有应用发布和更新 所有管理员都可以通过托管的 Google Play 使用工作流程 使管理员能够通过 EMM 控制台(而不是通过 Google Play 控制台)更新 Google 托管的私有应用程序。

企业管理员可以使用 Google Play 开发者发布 API 上传已私下发布到企业的应用程序的新版本。

如果您不想使用 Play 来实现此功能,您可以阅读“自托管私人应用程序管理”部分。

您还可以查看“托管 Google Play”来为您的用户发布私有应用程序:https://support.google.com/googleplay/work/topic/6145152 https://support.google.com/googleplay/work/topic/6145152

注册 Google Play 开发者帐户并设置正确的管理员权限以将应用程序上传并发布到托管的 Google Play 后,您可以使用企业移动管理 (EMM) 控制台将应用程序分发给用户。

通过 EMM 路线,您可以更新具有与常规 Google Play 应用程序相同功能的应用程序,并且更新不会导致用户丢失数据。不幸的是,Google 的文档并未详细或集中介绍此功能。通过 Google 还要求您的所有设备都登录 Google 帐户,以便安装应用程序或接收您通过 EMM 控制台部署的更新。

另一种选择是使用移动设备管理 (MDM) 解决方案。如果您有三星设备,您可以查看 Samsung Knox,它有一种更简单的方法来分发您的应用程序:https://www.samsungknox.com/en/article/manage-apps https://www.samsungknox.com/en/article/manage-apps

一次性应用程序的另一个 MDM 选项是 Mason(https://bymason.com/ https://bymason.com/)。 Mason 允许您上传应用程序,选择任何或所有设备,然后将 APK 部署给用户。更新应用程序时,您所要做的就是增加应用程序版本,更新功能将与常规 Google Play 更新相同。您的用户也不必登录 Google 帐户。

如果这听起来对您有用,请随时与我联系trevor @ bymason.com

免责声明:我在梅森工作

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

更新 COSU 设备中的 Android 应用程序 的相关文章

  • Espresso - 检查使用按钮按下意图打开哪个活动?

    是否可以跟踪按下某个按钮后打开了哪个 Activity 我有一个测试 其中当单击 按下按钮时 it 向服务器发送请求 直到发送请求时 它打开一个活动 验证是否执行成功在测试中 我需要检查打开的 Activity 是什么 我的测试示例 检查
  • ACTION_VIEW 的 Intent.createChooser 仅显示默认浏览器

    我正在尝试使用 Intent createChooser 显示应用程序选择器对话框 该对话框将列出用户手机中所有可用的网络浏览器 我正在使用下面的代码 Intent browserIntent new Intent Intent ACTIO
  • 未找到 Gradle DSL 方法:“versionCode()”

    构建我的 Android 项目时遇到问题 我使用Grgit https github com ajoberstar grgit填写versionCode and versionName在 gradle 中 一切工作正常 直到我将 Andro
  • Mailgun POST /messages API 总是抛出 401 禁止

    我正在尝试使用改造库在 Android 中发送 Mailgun POST messages API 请求 以下是改装要求 HTTP POSThttps api key xxx v3 sandboxxxx messages https api
  • 无法将 Tesseract OCR 模块添加到 Android Studio

    我按照此处找到的分步指南进行操作 https www codeproject com Articles 840623 Android Character Recognition https www codeproject com Artic
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • 下载图像并显示它

    应用程序的主要目的是下载和显示图像 但是当我尝试启动应用程序时它崩溃了 这是我的代码 private DownloadImageTask task protected void onCreate Bundle savedInstanceSt
  • Android 在启动时启动服务,如何在设备重启后重新启动服务类?

    我需要在启动时启动一项服务 我搜索了很多 他们正在谈论广播接收器 由于我是 Android 开发新手 所以我对 Android 上的服务并没有清楚的了解 请提供一些源代码 您的接收者 public class MyReceiver exte
  • 当应用程序未运行时如何堆叠 Firebase Cloud Messaging 通知?

    我在用Firebase Cloud Messaging将推送通知从我的服务器发送到我的 Android 应用程序 当应用程序运行时 通知是stacked因为我将它们设置为我的一个组FirebaseMessagingService 这很好 但
  • 如何从SurfaceView绘制到Canvas?

    我正在尝试做简单的画家 问题是Android看起来有三个独立的Canvas并给我它来顺序绘制 我用以下方式制作了用户界面SurfaceView 把霍尔德从中拿走 Override protected void onCreate Bundle
  • 更改android中禁用按钮的颜色

    有没有办法通过样式或其他形式更改 android 中禁用按钮的颜色 我目前有以下内容 可绘制 button default xml
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • Android开发:未定义方法

    大家好 我是 Android 和 Eclipse 的新手 我刚刚遵循了developer android com 上的教程 现在我在添加操作栏 http developer android com training basics actio
  • 如何在 WebView 中添加 JavaScript 函数并稍后在提交 reCAPTCHA 时从 HTML 调用它

    我在 WebView 中添加一个 JavaScript 函数 如下所示 Kotlin val webView findViewById R id webview as WebView webView getSettings setJavaS
  • Android:如何使视图增长以填充可用空间?

    这看起来很简单 但我不知道该怎么做 我有一个带有 EditText 和两个 ImageButtons 的水平布局 我希望 ImageButtons 具有固定大小 并且 EditText 占据布局中的剩余空间 如何才能做到这一点
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 按名称查找视图

    是否可以通过名称而不是 id 来查找视图 findViewById R id someView 但我想做这样的事情 findViewByName someView 在处理 xml 时 您必须通过标识符查找视图 但是您可以使用以下方式查找标识
  • ormlite 将日期读取为 'yyyy-MM-dd'

    我需要读取给我的 sqlite 数据库 因此我无法更改表中的日期格式 yyyy MM dd 当我尝试使用 ormlite 为我生成对象时 使用以下注释 DatabaseField columnName REVISION DATE dataT
  • gradle-experimental:0.1.0 buildConfigField

    谁知道怎么定义buildConfigField在实验性的 gradle 插件中 android productFlavors create demo applicationId com anthonymandra rawdroid buil
  • 绘制大位图时 nSyncAndDrawFrame 速度极慢

    我想用多个大位图优化视差滚动视图 在我的 Nexus 5 上 一切都很顺利 Traceview 转储如下所示 doFrame 方法大约需要 18 毫秒才能完成 但是 当使用我的 Nexus 7 或 Android 6 模拟器 Genymot

随机推荐

  • CreateProcessAsUser 不绘制 GUI

    我有一个在 SYSTEM 帐户下运行的 Windows 服务 用于检查每个登录用户是否正在运行特定的应用程序 如果应用程序未运行 服务将启动它 在相应的用户名下 我正在尝试使用 CreateProcessAsUser 来实现我的目标 该服务
  • 在数据表中正确渲染迷你图

    在下面发布的示例中 我尝试将 jquery sparkline 库中的迷你图渲染为 jquery dataTables 表中的数据列 加载下面的示例效果很好 但仅限于第一页 如果我单击 下一步 而不是将数据呈现为迷你图 它只会呈现数字 如果
  • Apache 背后的代理 React 服务器

    我刚刚使用 create react app 创建了一个 React 应用程序 该应用程序从端口 3000 启动 很好 我想使用前缀访问应用程序 在我的例子中是 node 和端口 80 即http localhost 节点 http loc
  • PHP 函数错误和成功模式

    当函数正常执行时 从 PHP 函数返回错误的最佳方法是什么 Example public function login user pw if this gt verifyUser user return error about invali
  • Google foobar 响应错误(400)

    我正在尝试解决Google的问题foob ar挑战 http www google com foobar 我不会向其他人破坏实际问题 但标题是 拯救 Beta Rabbit 我的解决方案是用 Java 编码的 每次我尝试验证它时 我都会得到
  • 在单独的表单上更改 NotifyIcon

    我有一个带有 NotifyIcon 的表单 Form1 我有另一个表单 Form2 我想更改 NotifyIcon 的图标 每当我使用此代码时 我都会在系统托盘中显示一个额外的图标 而不是更改当前图标 Form1 ico 是 NotifyI
  • 如何提示用户选择保存文件的位置?

    在我的主表单中 我有一个名为 SavePDFDocument 的方法 private void SavePDFDocument PDFWrapper pdfWrapper new PDFWrapper pdfWrapper CreatePD
  • getResponseCode 中的 HttpURLConnection 随机出现 SocketTimeoutException

    我在 con getResponseCode 中收到以下错误 java net SocketTimeoutException failed to connect to example com port 80 after 3000ms at
  • 如何在 SQLAlchemy 中实现空合并运算符?

    或者我该如何让这个东西发挥作用 我有一个 Interval 对象 class Interval Base tablename intervals id Column Integer primary key True start Column
  • Plotly.js:初始缩放

    我有 256 个数据点 当绘图首次出现时 我希望 x 轴自动缩放到沿 X 轴的特定范围 有办法吗 我必须以某种方式打到 D3 吗 就像是 Plotly plot graph some data trace xaxis range 0 1 t
  • 导入 const 数组 React

    我尝试将一个数组导入到我的父组件中 并将该数据作为道具发送给他的孩子 import Seed from const Seed export default class ProductList extends React Component
  • 在 Ansible 中动态构建变量名称

    我有一个剧本 它将迭代不同环境 dev 和 prod 中的一组主机 主机所处的环境会改变它所拥有的其他变量 例如 这是在我的 vars main yml 文件中 folder list DEV folder 1 folder 2 folde
  • 以给定概率生成随机数

    我有一个问题 基本上是以下 matlab 问题的矢量化 R 解决方案 matlab 生成给定概率的随机数 https stackoverflow com questions 13914066 generate random number w
  • 不带扩展名的文件名的正则表达式

    我正在寻找一个正则表达式 它将捕获没有扩展名的文件名 并在反向引用中给我该名称 以便我可以添加扩展名 因此 如果有人输入 xyz 我可以将其替换为 xyz html 不应捕获 xyz php 或 xyz html Thanks 使用以下正则
  • 写入大文件

    我尝试写入一个大文件 但它似乎不适用于大于 2GB 的文件 我尝试过使用 boost iostreams file sink 这只是升压流的限制吗 还有其他方法可以在 Win64 和 win32 上写入大文件吗 这取决于 您正在使用的文件系
  • Application.LoadComponent 出现线程错误(键已存在)

    MSDN 说 System Windows Application 的公共静态成员是线程安全的 但是当我尝试使用多个线程运行我的应用程序时 出现以下异常 ArgumentException An entry with the same ke
  • Scala - 辅助构造函数总是必须调用另一个构造函数有什么好处?

    来自 Java 世界 我不明白 Scala 中对辅助构造函数的限制有什么帮助 在Java中 我知道我们可以有多个构造函数 只要它们的签名不同 在 Scala 中 辅助构造函数中的第一个调用必须是另一个辅助构造函数或类的主构造函数 为什么 这
  • 如何在Lua中给定日期时间添加天数

    我是 Lua 脚本的新手 我的系统在任何时区运行 但我需要格林威治标准时区的新日期和格林威治标准时间的给定日期 local creation date 2016 05 23 07 34 19 This is in GMT date loca
  • 重写子类中的 ReadOnly 属性以使其读/写(VB.NET 或 C#)

    这在带有属性的 VB NET 中似乎不可能 因为属性语句本身必须描述它是否是ReadOnly or not 在我下面的例子中 它不允许我做ReadWriteChild编译 我想我可以让父级读 写 然后让 ReadOnlyChild 的设置器
  • 更新 COSU 设备中的 Android 应用程序

    我正在从事应用程序支持工作COSU 应用程序 Android https developer android com work cosu html 该应用程序对我来说运行良好 但我不明白用户将如何更新我们的应用程序 因为 COSU 应用程序