如何防止Android应用程序被外部谷歌播放下载

时间:2015-11-16 20:14:46

标签: android

我正在为Android开发应用程序。如今有很多商店免费非法分发Android付费应用程序。 我是否可以编写任何代码片段以防止我的Android应用程序从任何其他不是谷歌播放的商店下载?例如,当用户尝试打开应用时,显示类似于&#34的消息;您需要在Google Play中购买此应用"然后关闭应用程序?

1 个答案:

答案 0 :(得分:6)

检查packageInstallerName

检查您的应用是否是从Google Play下载的最简单方法是检查packageInstallerName是否为空,如下例所示:

String installer = getPackageManager().getInstallerPackageName(
        "com.example.myapp");

if (installer == null) {
    // app was illegally downloaded from unknown source. 
} 
else {
    // app was probably installed legally. Hooray!
}

但正如我们在此处所读:https://stackoverflow.com/a/36299631/4730812

  

您不应使用PackageManager#getInstallerPackageName来检查该应用是否是从Google Play安装的,还是出于许可目的而出于以下原因:

     

1)安装程序包名称以后可能会更改。例如,安装程序包名称用于   "com.google.android.feedback"(见[here] [2])现在是   "com.android.vending"

     

2)检查安装程序packagename是否存在盗版原因等同于使用Base64加密密码 - 它只是不好   实践。

     

3)合法购买应用的用户可以侧载APK或从另一个未设置该应用的备份应用中恢复该APK   更正安装程序包名称并获取许可证检查错误。这将   最有可能导致糟糕的评论。

     

4)正如您所提到的,盗版者可以在安装APK时设置安装程序包名称。

因此,只有两种方法可以阻止Android应用在Google Play商店之外下载:

为您的应用添加许可证;

基本上确保用户使用设备购买了应用程序:

enter image description here

Android参考:

应用内结算

免费提供您的应用程序并添加内置购买。

  

应用内结算是一项Google Play服务,可让您销售数字广告   来自您的应用程序内容。您可以使用该服务进行销售   广泛的内容,包括媒体等可下载内容   文件或照片,虚拟内容,如游戏关卡或药水,   高级服务和功能等。您可以使用应用内结算功能   将产品销售为:

     
      
  • 标准应用内商品(一次性结算)或

  •   
  • 订阅(定期,自动结算)

  •   
     

当您使用应用内结算服务销售商品时,是否可以   Google Play是一种应用内商品或订阅,可以处理所有结帐   细节,所以你的应用程序永远不必直接处理任何   金融交易。 Google Play使用相同的结帐后端   用于应用程序购买的服务,以便您的用户体验   一致且熟悉的购买流程。

     

您通过Google Play发布的任何应用都可以实施   应用内结算。

Android参考:

希望它会有所帮助