如何在AVD上测试'uses:feature = telephony'要求?

时间:2017-07-17 13:36:12

标签: android avd

之前我问过一个关于从Android应用程序停止平板电脑的问题,我已将此行添加到代码中:

<uses-feature android:name="android.hardware.telephony" android:required="true"/> 

现在我想验证它,并确保通过在模拟器上测试该应用无法在平板电脑上运行。但是,仿真器似乎始终满足此要求。还有其他方法可以测试吗?

1 个答案:

答案 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屏幕的手机。 (他们认为这个术语更像是平板手机,但它们仍然是手机。只是大手机。)

总结一下:

  • 使用所需标记(理论上应该)允许应用从第三方来源安装,但Google Play会将其显示为不兼容。因此USB调试和APK安装(不是来自Google Play)允许安装。请在运行时检查兼容性
  • 试图阻止平板电脑访问应用程序基本上是愚蠢的。平板电脑也可以有SIM卡,阻止平板电脑,因为它们有一个更大的屏幕不是一个好主意。检查SIM卡是最好的方法。
  • 对于模拟器,AFAIK即使必要也会安装在测试中。如果你打电话给它没有的东西,它会崩溃。您是否检查过确保平板电脑仿真器没有电话访问权限
  

现在我想验证它,并确保通过在模拟器上测试该应用无法在平板电脑上运行。但是,仿真器似乎始终满足此要求。还有其他方法可以测试吗?

嗯,必需(如评论中所述)是信息性的。设备本身不检查清单中的条件(至少必需= true)。安装完成后,请在运行时检查兼容性。 required = true标记可阻止Google Play在不受支持的设备上安装(显示为&#34;不兼容&#34;)。

(不幸的是)应用程序倾向于盗版并上传到APK镜像和类似网站(我从经验中知道这一点)。这些网站不像Google Play,并忽略required = true次来电。即使在不兼容的设备上,也可以从这些站点安装该应用程序。因此,避免不兼容使用的最佳方法是检查设备是否在运行时具有电话访问权限。

要检查运行时,这是一个很大的领域。 Check this question针对不同的解决方案。