如何检查phonegap中的设备?。实际上我需要我的应用程序只运行平板电脑或Iphone。我需要阻止我的应用程序在其他手机上只运行Android平板电脑或在iPhone Ipad.is可以检入的PhoneGap ..?
由于
答案 0 :(得分:7)
有几种可用的解决方案。有些是由javascript提供的,有些是免费的,有些是付费服务。还有一些是服务器端,有些是客户端,但是从这封邮件中我认为你需要客户端解决方案。
酷炫的新网络技术的优势非常有趣,直到你 必须支持落后的浏览器。 Modernizr让它变得简单 你要编写条件JavaScript和CSS来处理每种情况, 浏览器是否支持某项功能。这是完美的 渐进式增强。
好:
仅客户端,服务器端组件不存在
快速但仍然很大的javascript框架与其12kb。由于其模块化,它可以变小,取决于您的需求。
糟糕:
只能执行这么多,而不是服务器端检测的信息。
Modernizr本身是了解用户浏览器功能的好方法。但是,您只能在浏览器本身访问其API,这意味着您无法轻松了解服务器逻辑中的浏览器功能。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Modernizr Example</title>
<script src="modernizr.min.js"></script>
</head>
<body>
<script>
if (Modernizr.canvas) {
// supported
} else {
// no native canvas support available :(
}
</script>
</body>
</html>
JavaScript based browser sniffing
有争议的是,这可能是(在学术上)最糟糕的方式 检测手机,但确实有它的优点。
好:
简单
糟糕:
它只会告诉设备类型,但它不会提供设备版本。例如,它会告诉你我们使用的是iPad,但如果是版本1,2或3则不会。
示例:
<script type="text/javascript">
var agent = navigator.userAgent;
var isWebkit = (agent.indexOf("AppleWebKit") > 0);
var isIPad = (agent.indexOf("iPad") > 0);
var isIOS = (agent.indexOf("iPhone") > 0 || agent.indexOf("iPod") > 0);
var isAndroid = (agent.indexOf("Android") > 0);
var isNewBlackBerry = (agent.indexOf("AppleWebKit") > 0 && agent.indexOf("BlackBerry") > 0);
var isWebOS = (agent.indexOf("webOS") > 0);
var isWindowsMobile = (agent.indexOf("IEMobile") > 0);
var isSmallScreen = (screen.width < 767 || (isAndroid && screen.width < 1000));
var isUnknownMobile = (isWebkit && isSmallScreen);
var isMobile = (isIOS || isAndroid || isNewBlackBerry || isWebOS || isWindowsMobile || isUnknownMobile);
var isTablet = (isIPad || (isMobile && !isSmallScreen));
if ( isMobile && isSmallScreen && document.cookie.indexOf( "mobileFullSiteClicked=") < 0 ) mobileRedirect();
</script>
我有另一篇关于这个主题的文章/答案。找到它 HERE 。
答案 1 :(得分:4)
你可以使用JavaScript,使用用户代理已经在另一个答案中解释,
但您也可以使用Cordova / PhoneGap设备API
http://cordova.apache.org/docs/en/2.8.0/cordova_device_device.model.md.html#device.model
使用 var string = device.model;
字符串将包含iOS模型
向您提供本地人的所有信息,以防您想知道它是iPad 1,iPad 2还是iPad Mini
例如“iPad2,5”是iPad Mini Wifi
查看此网站以获取地图信息 http://theiphonewiki.com/wiki/Models
答案 2 :(得分:1)
Cordova&#34;开箱即用&#34;无法确定设备是否为平板电脑。
对于iOS,可以通过检查用户代理字符串,使用一小段Javascript来检测设备是否为iPad:
var isTablet = !!navigator.userAgent.match(/iPad/i);
然而,对于Android来说,JS还不够好,它需要一些原生的Java:
private boolean isTabletDevice(Context applicationContext) {
boolean device_large = ((applicationContext.getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) >=
Configuration.SCREENLAYOUT_SIZE_LARGE);
if (device_large) {
DisplayMetrics metrics = new DisplayMetrics();
Activity activity = this.cordova.getActivity();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
if (metrics.densityDpi == DisplayMetrics.DENSITY_DEFAULT
|| metrics.densityDpi == DisplayMetrics.DENSITY_HIGH
|| metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM
|| metrics.densityDpi == DisplayMetrics.DENSITY_TV
|| metrics.densityDpi == DisplayMetrics.DENSITY_XHIGH) {
Log.d(LOG_TAG, "Is Tablet Device");
return true;
}
}
Log.d(LOG_TAG, "Is NOT Tablet Device");
return false;
}
此插件将这两种方法包含在一个易于使用的Android和iOS包中:https://github.com/dpa99c/phonegap-istablet。