Android平板电脑上的应用程序在Google Android市场中未显示

4
我的应用程序在Android Market上支持超过600种不同的手机,并且目前拥有约10万用户。因此,它非常受欢迎,但是我很长时间以来都无法弄清楚为什么我的应用程序无法在Android Market的平板电脑用户界面中显示。由于这个问题,我错失了所有的平板电脑用户和很大一部分市场。
我从我的客户那里了解到这个问题,所以为了测试它,我尝试从三种不同类型的平板电脑上访问Android Market,但是全部失败了。我的应用程序仅适用于手机,而不是平板电脑。
在我的应用程序清单文件中,我只有以下3个必需权限:
其余的权限在清单文件中被标记为android:required="false":
等等...
我感到有些困惑,不知道为什么Google不想向他们的平板电脑用户展示我的应用程序,但对所有手机用户都能正常显示。
至于SDK,我需要最低要求Android 2.2版本,所以应该没问题。
总之,我错过了整个平板电脑市场,不知道自己犯了什么错误。
顺便说一下,我已经在家中的平板电脑上编译和运行了我的应用程序,没有任何问题,所以问题就在于Google不向平板电脑用户展示它。我知道应用程序在平板电脑上运行得很好。
这是我的整个清单文件,有什么线索可以解决这个问题吗?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="name.xml"
    android:versionCode="24"
    android:versionName="3.4" >

    <uses-sdk android:minSdkVersion="8" />

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.BLUETOOTH" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.RECORD_AUDIO" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.CALL_PHONE" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.CALL_PRIVILEGED" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.SEND_SMS" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.READ_CONTACTS" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.VIBRATE" android:required="false"></uses-permission>
    <uses-permission android:name="android.permission.READ_CALENDAR" android:required="false" ></uses-permission>
    <uses-permission android:name="android.permission.WRITE_CALENDAR" android:required="false" ></uses-permission>

    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <activity
            android:configChanges="orientation"
            android:label="@string/app_name"
            android:name="name"
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.SEARCH_LONG_PRESS" />
                <category android:name="android.intent.category.DEFAULT" /> 
            </intent-filter>

        </activity>
    </application>
</manifest>

我以为平板电脑只能运行3.0版本的代码? - owen gerig
我需要最低2.2版本,所有更新版本都会自动支持。此外,我知道该应用在平板电脑上运行良好,我能够从apk文件中安装它而没有任何问题。 - jjj
可能是您的清单文件配置错误导致其在平板电脑上显示为不兼容。您在清单文件中使用了屏幕大小、密度标签吗? - Donal Rafferty
http://stackoverflow.com/questions/7884896/app-not-supported-in-android-market-for-x-large-tablets - owen gerig
我已经将整个清单附加到我的原始帖子中。有什么线索吗? - jjj
我在清单文件中拥有以下权限。我的应用程序会显示在平板电脑上吗?https://gist.github.com/anonymous/985de509ae8d68d72bf3 - Ruchir Baronia
3个回答

4
我认为问题在于您的<uses-permission..>声明了您不需要的权限。它不使用android:required="false"属性,这可能会启用它们。权限本身(在大多数情况下)不应该过滤掉您的应用程序,但是,市场可以基于它们分配所需的功能。

我只能说文档没有说明uses-permission是有条件的,只提供了属性“android:name”。我认为你的应用程序很可能会请求你列出的所有权限,包括那些带有“required = false”的权限。这可能会导致一些硬件功能过滤器,例如由Android市场自动添加。 - harism
啊,我明白了。那很有趣。我会测试一下并回报结果。我想知道这是否是导致我所有问题的罪魁祸首。无论如何,在手机上它能正常工作,但在平板电脑上却不能,这仍然有些令人困惑。在设计XML文件方面,为什么要对这两个平台进行不同的处理,这毫无意义。 - jjj
我的猜测是TELEPHONY功能(但我对平板电脑不是很熟悉)。这里有一个链接,列出了权限如何暗示功能要求的清单:http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions-features。 - harism
如果您不需要蓝牙权限,请彻底删除它。如果您想要进行条件设置,请引入uses-feature标签,并将其设置为required="false"。这样,您的应用程序就不会被市场过滤掉,但您需要在代码级别上处理不支持蓝牙的设备。 - harism
嘿,我有以下这些权限,我的应用程序会在平板电脑上显示吗?https://gist.github.com/anonymous/985de509ae8d68d72bf3 - Ruchir Baronia
显示剩余6条评论

1
尝试添加


<supports-screens
    android:anyDensity="true"
    android:xlargeScreens="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"/>

添加到您的清单中。


1

你是否使用了<supports-screens>标签?问题不在你的代码中,而是在清单文件中。


我没有使用<supports-screens>标签,请查看我在原始帖子中附加的整个清单。 - jjj
我应该加入类似这样的东西吗?使它工作起来? <supports-screens android:resizeable=["true"| "false"] android:smallScreens=["true" | "false"] android:normalScreens=["true" | "false"] android:largeScreens=["true" | "false"] android:xlargeScreens=["true" | "false"] android:anyDensity=["true" | "false"] android:requiresSmallestWidthDp="integer" android:compatibleWidthLimitDp="integer" android:largestWidthLimitDp="integer"/> - jjj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接