之前我问过一个关于从Android应用程序停止平板电脑的问题,我已将此行添加到代码中:
<uses-feature android:name="android.hardware.telephony" android:required="true"/>
现在我想验证它,并确保通过在模拟器上测试该应用无法在平板电脑上运行。但是,仿真器似乎始终满足此要求。还有其他方法可以测试吗?
答案 0 :(得分:1)
您可以使用该线阻止无法访问SIM卡的所有设备从Google Play安装。这并不仅限于平板电脑。这可能是没有SIM卡的手机, 平板电脑带有SIM卡,能够发送短信和拨打电话。
来自Ken Wong对此问题的评论:
声明的元素仅供参考,这意味着Android系统本身在安装应用程序之前不会检查设备上的匹配功能支持。但是,其他服务(例如Google Play)或应用程序可能会将您的应用程序声明作为处理或与您的应用程序交互的一部分进行检查。
如果你想整体阻止平板电脑,那基本上是不可能的。 This question使用支持屏幕标记提供了一种可能的解决方案,但是这种AFAIK只会使该应用在Google Play上不兼容。如果它是从第三方安装的(USB调试,APK镜像,APK文件等),则可以安装它。我们再次回到兼容性问题。 supports-screens标签与所需标签相同:它是信息性的。那些尊重标签的人不允许安装。来自this article:
不支持小屏幕的应用程序将无法用于外部服务(如Google Play)的小屏幕设备
小屏幕只是一个例子。如果对任何屏幕大小的支持设置为false,则外部服务将无法使用它。直接安装APK(在Google Play外部安装apk或从USB调试安装)会绕过它。
此外,还有带Xlarge屏幕的手机。 (他们认为这个术语更像是平板手机,但它们仍然是手机。只是大手机。)
总结一下:
现在我想验证它,并确保通过在模拟器上测试该应用无法在平板电脑上运行。但是,仿真器似乎始终满足此要求。还有其他方法可以测试吗?
嗯,必需(如评论中所述)是信息性的。设备本身不检查清单中的条件(至少必需= true)。安装完成后,请在运行时检查兼容性。 required = true标记可阻止Google Play在不受支持的设备上安装(显示为&#34;不兼容&#34;)。
(不幸的是)应用程序倾向于盗版并上传到APK镜像和类似网站(我从经验中知道这一点)。这些网站不像Google Play,并忽略required = true
次来电。即使在不兼容的设备上,也可以从这些站点安装该应用程序。因此,避免不兼容使用的最佳方法是检查设备是否在运行时具有电话访问权限。
要检查运行时,这是一个很大的领域。 Check this question针对不同的解决方案。