运行在ICS(冰激凌Sandwitch)上的Android蜂巢应用程序
我有一个为蜂巢(最初是3.0)开发的应用程序,在ICS发布后,用户可以用ICS将其安装到他们的手机上,而不仅仅是平板电脑上。我如何过滤这些电话?我试过使用运行在ICS(冰激凌Sandwitch)上的Android蜂巢应用程序,android,screen,android-3.0-honeycomb,android-4.0-ice-cream-sandwich,Android,Screen,Android 3.0 Honeycomb,Android 4.0 Ice Cream Sandwich,我有一个为蜂巢(最初是3.0)开发的应用程序,在ICS发布后,用户可以用ICS将其安装到他们的手机上,而不仅仅是平板电脑上。我如何过滤这些电话?我试过使用,但不起作用。还有一件有趣的事(至少对我来说),我的应用程序不会缩小到更小的屏幕。我使用固定大小的控件,但大小以dp为单位 简言之: 有人知道我怎么过滤ICS手机吗?(最好来自代码) 我应该如何支持ICS手机?(我想我需要为ICS手机实施一个全新的布局,但我仍然有一个问题,如何确定它是哪种设备,手机还是平板电脑 您可以使用 if(Build.V
,但不起作用。还有一件有趣的事(至少对我来说),我的应用程序不会缩小到更小的屏幕。我使用固定大小的控件,但大小以dp为单位
简言之:
if(Build.VERSION.SDK_INT >= 14) {
//ics
}
其中Build是android.os.Build类
public static boolean isHoneycomb() {
// Can use static final constants like HONEYCOMB, declared in later versions
// of the OS since they are inlined at compile time. This is guaranteed behavior.
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
}
public static boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK)
>= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
public static boolean isHoneycombTablet(Context context) {
return isHoneycomb() && isTablet(context);
}
从以下答案复制:
您可能还希望限制Android Market允许用户在您的清单中包含的手机上安装此应用程序。如果您只希望您的应用程序在平板电脑市场上显示,请在您的AndroidManifest.xml中使用
属性(更多信息)。确保在蜂巢3.2(x-大,大)之前使用两个标识符和3.2+(600dp等)
你说的“我的应用程序不能缩小”到底是什么意思?你能在这里提供更多信息吗?谢谢,我看不见森林了:)。顺便说一句,对第二个问题有什么想法吗?无论如何,这不好,我不能决定这是手机还是平板电脑。我假设它们有相同的版本号(14)。最好的方法是创建一个BaseActivity,根据上述条件的结果询问“factory”类使用哪种行为。然后,BaseActivity类将使用一个接口来告诉实际的活动使用什么行为。谢谢。我不知道为什么,但当我在三星Galaxy Nexus上试用时,应用程序启动时没有任何问题,因为手机的屏幕分辨率是HD(或FullHD?)(x-large,大于600dp)。我的意思是“我的应用程序没有缩小”,当我从屏幕上启动应用程序时,只有一部分是可见的(中间),我对每个用户控件都使用了dip,所以理论上它是好的。啊,好的。Nexus上的这种行为实际上是意料之中的,因为虽然标准像素的数量大于600,但倾斜的数量却不是。Galaxy Nexus是一款xhdpi设备,这意味着2个标准像素相当于1个dip,因此其最短宽度为360dip。具有相同1280x720标准分辨率的平板电脑仅为mdpi,因此1个标准像素为一个标准dip。