【问题标题】:Programmatically trigger app update from Google play以编程方式从 Google Play 触发应用更新
【发布时间】:2016-10-05 11:17:05
【问题描述】:
  1. 在 Google Play 开发者控制台中提交应用更新并且该应用对所有用户可见后,任何设备需要多长时间才能选择更新? (假设全天都有活动的互联网 wifi 连接,并且此应用已开启自动更新)

  2. 我可以在没有任何用户提示或任何交互的情况下以编程方式向 Google Play 商店发起关于更新的请求吗? (假设更新时没有请求新的权限)。如果是这样,请建议如何。

其他信息:我的应用是为使用 android 盒子的数字标牌而设计的。应用程序在启动时启动,占据屏幕。在应用的生命周期内,不会有任何形式的用户直接与应用交互。

【问题讨论】:

  • 是的,您可以检查已安装的应用程序 apk 版本并播放 apk 版本,如果大于则重定向到播放商店
  • @user1506104 - 这个问题没有提供任何解决方案。仅当其他线程中至少有一个建议的解决方案时,请标记为重复。
  • @Ganesh Gudghe - 我已经考虑过了,但要求是在没有用户交互的情况下触发更新(没有任何新权限)。问题中提到了原因,请检查。谢谢
  • 将问题标记为重复应考虑问题的质量和答案。 meta.stackoverflow.com/questions/334533/…

标签: android google-play android-update-app


【解决方案1】:
  1. 通常会在 24 小时内安装更新,前提是用户保持与 Internet 的有效连接和充足的电池。 Android 盒子没有任何电池,因此通过 google play 自动更新(无需任何用户交互)并不可靠。

  2. 使用此代码在没有 Playstore 的情况下发出自动更新。

添加此权限:<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />

使用以下函数:

public static void installAPK(String filename) {
    File file = new File(filename);
    if (file.exists()) {
            Runtime.getRuntime().exec("chmod 777 " + filename);
            String command;
            command = "pm install -r " + filename;
            Process proc = Runtime.getRuntime().exec(new String[]{"su", "-c", command});
            proc.waitFor();
        }
}

注意:这仅在您自上次安装后未请求应用程序的任何额外权限时才有效。

【讨论】:

    【解决方案2】:
    1. 这取决于 Google 的后端复制您的新更新,通常在 8-24 小时内。
    2. 不,那将是一个安全漏洞。未经用户交互,应用不得自行安装或更新。

    【讨论】:

    • 如果没有请求新的权限,为什么会有安全漏洞?
    • 因为这会假设用户理解所有以前授予的权限,这不太可能。想想一个有权获取联系人、电话 ID 和发送短信的应用程序,它对它们没有任何恶意。假设应用程序的更新(通过原始作者或能够访问签名密钥和播放帐户详细信息的黑客)变得可用,该更新可以收集联系人和电话 ID,然后将详细信息发送到 SMS 接收器农场以做坏事。如果应用可以在没有用户交互的情况下自行更新,那就太糟糕了。
    【解决方案3】:

    我已经经历过很多次了。

    1> 我通常需要大约 2 到 4 小时才能在 google play 上更新我的应用程序。

    2> 我认为您在谈论强制更新。我为此所做的是 我制作了一个用于检查应用程序版本的 api。根据它,我重定向到谷歌播放中的更新屏幕。希望对你有帮助。

    // Here min_supported_version is generated from api
        if (min_supported_version <= BuildConfig.VERSION_CODE) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=yourpackagename")));
    }
    

    【讨论】:

    • 没有任何用户提示或任何交互。在解释原因的问题上添加了一些额外信息。请检查
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多