如何限制android应用仅限于平板电脑?

如何限制android应用仅限于平板电脑?,android,Android,我正在开发一款只针对平板电脑而不是手机的应用程序 这个代码是否足以实现我的目标?是否有任何方法可以测试它或谷歌播放它自己的排序并呈现给用户 下面是我尝试过的代码。但我不知道如何测试它 <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="18" /> <supports-screens android:largeScreens="true" android:normalScreens="false" an

我正在开发一款只针对平板电脑而不是手机的应用程序

这个代码是否足以实现我的目标?是否有任何方法可以测试它或谷歌播放它自己的排序并呈现给用户

下面是我尝试过的代码。但我不知道如何测试它

<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />

<supports-screens
android:largeScreens="true"
android:normalScreens="false"
android:smallScreens="false"
android:requiresSmallestWidthDp="600"
android:xlargeScreens="true" />

是否应随支持屏幕标签一起提供android:anyDensity=“true”?或者只保留该属性。我想在所有种类的平板电脑上使用我的应用程序


在这种情况下,任何帮助都是值得赞赏的。提前谢谢。

似乎没问题,据我所知应该可以用

想想你对平板电脑的定义。是什么让你的应用程序比7英寸的平板电脑更不适合6英寸的手机

在你把它上传到Google play商店之前,你无法真正测试它。manifest.xml中的这些过滤器由Google Play商店使用,而不是在安装应用程序时使用。他们只是确保有人在他的平板电脑上找不到该应用程序,并且“安装”按钮在网站上无法工作


我想你可以通过上传你的APK而不是发布来测试它。它将为您提供当前设置支持的设备列表。

无论您提供的设备是否正确,您都必须在将加载的平板电脑上进行测试,对于手机,它将不会启动

然后进入安卓市场出版商页面

1.确保您的应用已上载

2.单击你的应用程序名称

3.向下滚动至显示“显示设备”的位置

4.单击该按钮,您可以禁止所有手机下载您的应用程序


如果失败,您可以在清单中为屏幕大小等设置一些参数,但这不太可靠。

您可以在这里使用技巧

1)创建一个启动活动,它仅在成功场景中的“创建启动实际活动”中验证屏幕大小。像

// In onCreate of startup activity
if (isTablet()) {
    startActivity(new Intent(StartupActivity.this, MainActivity.class));
    this.finish(); // don't forget to kill startup activity after starting main activity.
} else {
    setContentView(R.layout.startup);
}
这是关键点。在其他情况下,您应该设置此活动的布局,理想情况下,此活动可以有一个标签和消息,如“设备不受支持”。以及一个关闭应用程序的按钮

2)理想情况下,如果希望只支持平板电脑,则应将所有字符串资源放在res/values large/strings.xml中。所以这里是诀窍,只需在字符串资源中添加以下项

<string name="is_supported_screen">true</string>
完成了……)

实际上,对于像平板电脑这样的大屏幕设备,将从res/values large/strings.xml加载字符串资源,并找到
true
,对于其他设备,android将从res/values/strings.xml加载资源,并在
R.string的值的
isTablet()方法中找到
false

最后,若应用程序安装在平板电脑上,您的主要活动将启动,并显示“设备不受支持”的消息


我想强调这是一个技巧,因此您需要仔细遵循所有步骤。如果出现任何错误,您将无法获得所需的结果。

是否为android:anyDensity=“true”应与支持屏幕标签一起提供?就是离开那个属性。我想在所有系列的平板电脑上工作。您的愿望在这里有更详细的描述:
<string name="is_supported_screen">false</string>
private boolean isTablet() {
    if (Boolean.parseBoolean(context.getResources().getString(R.string.is_supported_screen))) {
        return true;
    } else {
        return false;
    }
}