android - 检测应用程序是否从 Android Market 下载

标签 android

我有一个将数据上传到测试服务器和生产服务器的 Android 库。我希望使用此库的开发人员在开发时使用测试服务器,并在从 Android Market 下载应用程序时使用生产服务器。

这是否可能让应用程序知道它来自哪里(市场或非市场?)我想人们可以检测到签名 JAR 文件的存在。

最佳答案

是的,您可以为此使用签名。如果您在开发期间使用调试 key 对您的应用程序进行签名,并在将您的应用程序上传到市场时使用发布 key ,您可以检查应用程序的签名并基于该使用测试或生产服务器。 下面是一段读取应用签名的小代码:

    try {
        PackageManager manager = context.getPackageManager(); 
        PackageInfo appInfo = manager.getPackageInfo(
            YOUR_PACKAGE_NAME, PackageManager.GET_SIGNATURES);

        // Now test if the first signature equals your debug key.
        boolean shouldUseTestServer = 
            appInfo.signatures[0].toCharsString().equals(YOUR_DEBUG_KEY);

    } catch (NameNotFoundException e) {
        // Expected exception that occurs if the package is not present.
    }

YOUR_PACKAGE_NAME 必须类似于“com.wsl.CardioTrainer”。它必须是您在 AndroidManifest.xml 中使用的包名称。 祝你好运

标记

关于android - 检测应用程序是否从 Android Market 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986627/

相关文章:

android - Youtube API v3 总是返回错误 403 (accessNotConfigured)

android - SharedPreferences 似乎不起作用

android - 如何在 Android 应用程序中管理生产和调试 key ?

android - 使用 AlarmReceiver 和 OnBootReceiver 为 android 应用程序设置闹钟

android - 在 ViewHolder 中引用 Activity

javascript - 如何在 Worklight Server 适配器上执行 XMLHttpRequest?

android - 如何检查用户是否在Android中设置了手动更新或自动更新

java - Android打开失败: EACCES (Permission denied)

android - 如何查看android模拟器的sqlite数据库?

java - 如何在 Android 应用程序中运行终端命令?