Is it ok to check legality of installing paid android app by checking getInstallerPackageName?(是否可以通过检查 getInstallerPackageName 来检查安装付费 Android 应用的合法性?)
问题描述
为了确保我的付费 android 应用程序是从商店合法安装的,我这样写:
To ensure that my paid android application was legally installed from store, I write this:
String installer = getPackageManager().getInstallerPackageName(
"com.example.myapp");
if (installer == null) {
// app was illegally downloaded from unknown source.
// dear user, please re-install it from market
}
else {
// app was probably installed legally
// (also it's good to check actual installer name)
}
没事吧?从市场合法购买和安装的应用程序是否有可能获得空的安装程序包名称并通过此测试?
Is it ok? Is there a chance that application that is legally purchased and installed from market will get empty installer package name and fail this test?
我了解用户可以运行 adb -i com.fake.installer myapp.apk
并通过此检查,但如果 合法 用户会遇到潜在问题更为重要或不.
I understand that user can run adb -i com.fake.installer myapp.apk
and pass this check, but it's more important if legal users will get potential problems or not.
推荐答案
你不应该使用 PackageManager#getInstallerPackageName
检查应用程序是从 Google Play 安装还是出于以下原因的许可目的:
You should not use PackageManager#getInstallerPackageName
to check if the app was installed from Google Play or for licensing purposes for the following reasons:
1) 安装程序包名称将来可能会更改.例如,安装程序包名称使用 "com.google.android.feedback"
(请参阅此处) 现在是 "com.android.vending"
.
1) The installer packagename can change in the future. For example, the installer package name use to be "com.google.android.feedback"
(see here) and now it is "com.android.vending"
.
2) 出于盗版原因检查安装程序包名等同于使用 Base64 加密密码 - 这是一种不好的做法.
2) Checking the installer packagename for piracy reasons is equivalent to using Base64 to encrypt passwords — it's simply bad practice.
3) 合法购买该应用程序的用户可以旁加载 APK 或从另一个未设置正确安装程序包名称的备份应用程序中恢复它,并收到许可证检查错误.这很可能会导致差评.
3) Users who legally purchased the app can side-load the APK or restore it from another backup application which doesn't set the correct installer packagename and get a license check error. This will most likely lead to bad reviews.
4)就像你提到的,盗版者在安装APK时可以简单的设置安装包名.
4) Like you mentioned, pirates can simply set the installer packagename when installing the APK.
您应该使用 App Licensing 或切换到 应用内结算.
You should use App Licensing or switch to In-app Billing.
这篇关于是否可以通过检查 getInstallerPackageName 来检查安装付费 Android 应用的合法性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:是否可以通过检查 getInstallerPackageName 来检查安装付费 Android 应用的合法性?


基础教程推荐
- :hover 状态不会在 iOS 上结束 2022-01-01
- LocationClient 与 LocationManager 2022-01-01
- 固定小数的Android Money Input 2022-01-01
- 如何使用 YouTube API V3? 2022-01-01
- 使用 Ryzen 处理器同时运行 WSL2 和 Android Studio 2022-01-01
- Android文本颜色不会改变颜色 2022-01-01
- “让"到底是怎么回事?关键字在 Swift 中的作用? 2022-01-01
- 在 iOS 上默认是 char 签名还是 unsigned? 2022-01-01
- Android ViewPager:在 ViewPager 中更新屏幕外但缓存的片段 2022-01-01
- 如何使 UINavigationBar 背景透明? 2022-01-01