android - 如何创建可下载的许可证 key ,并在 Android 上检查它

标签 android package copy-protection apk license-key

我确信这是相当基础的,但我不知道要搜索什么才能获得简明的教程。我想创建一个应用程序并使其可以在 Android Market 上免费下载。然后,我想创建一个或多个应用程序,这些应用程序只是许可证 key ,可以在免费应用程序上打开某些功能。免费应用程序检查设备上是否存在付费应用程序的最佳方式是什么?有没有一种简单的方法可以通过包名称进行检查,或者我是否需要在付费应用程序中创建一个内容提供程序,免费应用程序可以调用它来检查有效性?

或者可能存在一些所有应用程序都可以读/写的全局内存空间(例如应用程序中的首选项)。

我知道一个可行的解决方案,而且我可以轻松实现 - 让每个付费应用程序在首次启动时调用网络服务并注册该手机的 IMEI。这可行,但需要互联网访问,这对我的应用来说可能方便也可能不方便。

与大多数 Android 问题一样 - 不止一种方法可以解决问题。我正在寻找你们认为最好(也是最安全)的方法。

最佳答案

一种解决方案基本上是测试您的“许可”应用程序是否仍安装在手机上。然后即使用户更换手机,他仍然可以使用他的谷歌帐户安装许可应用程序。

您可以使用以下代码获取已安装应用程序的列表:

List<ApplicationInfo> list = context.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);

然后只需找到一个 ApplicationInfo,其中 packageName 成员对应于您的许可应用之一。

关于android - 如何创建可下载的许可证 key ,并在 Android 上检查它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3685844/

相关文章:

java - 在android中以毫秒为单位获取系统时间

perl - 什么时候应该使用包变量和词法变量(有什么区别)?

vb.net - 为使用 vb.net 开发的软件生成 key

C++知识产权保护/反逆向

filter - 如何去除包装过滤器?

python - 删除.py文件后如何运行python项目?

java - 是否可以使用 RxJava 在非主线程中调用 “onSensorChanged” 方法?

android - 如何绘制自定义背景

java - NullPointerException 仅适用于某些设备上的动画

java - 读取特定包中文件的内容