识别设备是不是为 Kindle
Posted
技术标签:
【中文标题】识别设备是不是为 Kindle【英文标题】:Identify if device is Kindle识别设备是否为 Kindle 【发布时间】:2013-01-25 00:29:02 【问题描述】:我想在亚马逊的 AppStore 上提供一个 android 应用程序。我的应用有一些基于位置的功能和相机功能,如果用户的设备是 Kindle,我需要禁用这些功能。有没有办法以编程方式检测用户的设备是否是 Kindle?我知道我可以为 Kindle 和非 Kindle 构建不同的版本,但我想我首先要问是否有办法在代码中检测到这一点。
【问题讨论】:
您可能问错了问题。 Kindle 有什么问题? 例如,kindle 没有摄像头。我的应用程序的功能之一是访问相机。我正在探索是否可以根据检查设备是否为 Kindle 来删除相机菜单项。 @Simon 你是对的——这是个错误的问题。 “如何检测设备功能”会更好。谢谢。 那么错误的问题:) “如果设备没有某些硬件功能,我如何禁用我的应用程序中的功能”即使您确实检测到了 Kindle,那么其他 500 台没有摄像头的设备呢?跨度> 【参考方案1】:要检查设备是否具有特定功能,您 PackageManager.hasSystemFeature(String name)
对您来说应该足够了。
要检查位置和摄像头,您可以使用 FEATURE_LOCATION
和 FEATURE_CAMERA
作为 hasSystemFeature
的参数
如果您仍需要了解设备的硬件,可以查看
android.os.Build.MANUFACTURER
android.os.Build.BRAND
android.os.Build.BOARD
android.os.Build.DEVICE
【讨论】:
谢谢,完美!非常感谢它,如此快速而详细的答案。【参考方案2】:如果您想检测 Kindle,请使用Build.MANUFACTURER 查找制造商(亚马逊),使用Build.MODEL 查找型号。在 Kindle 的情况下,model 的值会有所不同,可以是 KFTT、KFOT、Kindle Fire 等。See this for model nos.
【讨论】:
谢谢,真的很有帮助。+1。【参考方案3】:您可以使用此方法识别 Kindle 设备
public static boolean isKindle()
final String AMAZON = "Amazon";
final String KINDLE_FIRE = "Kindle Fire";
return (Build.MANUFACTURER.equals(AMAZON) && Build.MODEL.equals(KINDLE_FIRE) ) || Build.MODEL.startsWith("KF");
【讨论】:
@Kate 我想你错过了我的代码的最后一部分|| Build.MODEL.startsWith("KF")
;)
@Kate 我实际上有一个旧的 Kindle Fire,我可以确认 Build.Model == "Kindle Fire"
是可能的,而 ||
部分是我的代码的后备。【参考方案4】:
我知道这篇文章很旧,但处理这个问题的方法是错误的。如果您对 Kindles 的担忧与硬件相关,即 Kindles 没有摄像头或摄像头支持,那么您需要检查摄像头支持而不是设备类型。如果其他设备不提供相机支持怎么办?而不是建议的答案,试试这个
public static boolean isCameraAvailable(Context context)
PackageManager packageManager=context.getPackageManager();
if (packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY))
// this device has a camera
return true;
else
// no camera on this device
return false;
这比检测设备是否是kindle要好得多,否则为kindle做另一个构建。
【讨论】:
以上是关于识别设备是不是为 Kindle的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UIActivityViewController 中识别和排除第 3 方 ActivityType(例如“发送到 Kindle”、“Chrome”)?