使用代码检测Android设备是手机还是平板电脑

时间:2013-07-31 11:10:56

标签: android device

我为移动设备和平板电脑做了一个应用程序。在这里,我想在移动设备上看到我的一些内容,但不是在平板电脑中。

如何在启动活动时检测Android设备是手机还是平板电脑。

我谷歌并找到一些像User -agent这样的建议.. 我该如何使用它或任何其他解决方案??

提前致谢...

4 个答案:

答案 0 :(得分:1)

public static boolean isTablet (Context context) 
{

    return (context.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
如果是平板电脑,这将返回true;如果是移动设备,则返回false

答案 1 :(得分:1)

TelephonyManager manager = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);

if (manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE)
{
     //It's a tablet
}
else
{
     //It's a phone
}

应该有效

答案 2 :(得分:1)

好吧,当针对不同类型的屏幕尺寸使用不同的资源时,最好的文章是"Supporting Multiple Screens"

我检测设备类型的最简单方法是在strings.xml中为单个密钥添加不同的值,我们称之为"device_type"。所以在:

  1. 值 - &gt; strings.xml我将<string name="device_type">smartphone</string>
  2. values-large - &gt; strings.xml我将<string name="device_type">tablet</string>
  3. values-small - &gt; strings.xml我将<string name="device_type">small</string>
  4. values-xlarge - &gt; strings.xml我将<string name="device_type">xlarge</string>
  5. 有了上下文,我将读取此值并确定我拥有的设备类型。

答案 3 :(得分:0)

使用

public static boolean isTablet(Context context) {
    return hasHoneycomb() && isTab(context);
}

有支持功能

     public static boolean hasHoneycomb() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
    }

    public static boolean isTab(Context context) {
        return (context.getResources().getConfiguration().screenLayout
                & Configuration.SCREENLAYOUT_SIZE_MASK)
                >= Configuration.SCREENLAYOUT_SIZE_LARGE;
    }