【问题标题】:How can I prevent user from installing old version of APK?如何防止用户安装旧版本的 APK?
【发布时间】:2013-05-28 07:30:43
【问题描述】:

当我们在 android manifest 中使用版本代码时。

当用户安装了新版本的apk,如何防止用户安装旧版本的apk?

或者至少给他一些提示,例如“您正在使用旧版本的应用程序覆盖新版本”?

【问题讨论】:

    标签: android installation version


    【解决方案1】:

    用户不能同时安装两个版本的应用程序。所以不用担心预防。

    虽然 ADB 可以做到这一点,但这会用新的应用程序替换以前的应用程序。

    【讨论】:

    • 我担心安装新版本时可以安装旧版本的apk。我是通过文件管理器中的apk文件手动完成的。
    • 这就是我的意思..但是您将在设备中仅获得一个版本的应用程序..再次检查...用户可以手动安装任何版本的应用程序(但请记住该设备将具有您的应用程序的单一版本)。但是 Play 提供了仅安装最新版本的应用程序的功能...用户无法从 PLay 安装旧版本的应用程序...
    • 那么你的困惑是什么......你的应用程序将通过 Play 安装......对吗?
    • 我想警告我的用户不要在新版本之上安装旧版本。也许没有机制可以做到这一点?
    • 您的应用程序将在哪里?你不打算在 PLAY 上上传吗?
    【解决方案2】:

    您不能在较新的应用程序上安装旧版本的应用程序。 Android 不允许您这样做。所以不用担心他的。

    【讨论】:

    • 我正在做一个测试,这个操作不会被系统阻止。首先我导出一个名为 app1.0.apk 的 apk,版本代码 1 和 versionName 1.0。然后导出一个名为 app2.0 的 apk。 apk with versionCode 2 ande versionName 2.0.With 2.0 installed,我仍然可以在它上面安装1.0。
    【解决方案3】:

    你可以在应用启动时查看应用版本,然后与服务器提供的版本进行比较,你可以简单地将它存储在后端服务器的txt或json中,然后在应用启动时,你可以比较两者版本。如果应用版本低于服务器报告的版本,则通过消息和指向新 apk 的链接警告用户,或阻止应用的使用。

    您可以像这样在 Android 中获取应用代码或版本:

    import android.content.pm.PackageManager.NameNotFoundException;
    import android.content.pm.PackageManager;
    
    ...
    
    final PackageManager packageManager = this.reactContext.getPackageManager();
    final String packageName = this.reactContext.getPackageName();
    
    try {
        String version = packageManager.getPackageInfo(packageName, 0).versionName;
        String buildNumber = packageManager.getPackageInfo(packageName, 0).versionCode;
    catch (NameNotFoundException e) {
        // Handle error
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 2020-05-09
      • 2021-05-23
      • 2019-10-29
      相关资源
      最近更新 更多