Android Market过滤应用 - 电话?

时间:2011-12-07 18:04:30

标签: android permissions screen android-manifest android-market-filtering

我有以下清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.myapp.MainActivity"
    android:versionCode="1"
    android:versionName="1.0.0" >

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

    </supports-screens>

    <uses-permission
        android:name="android.permission.RECEIVE_SMS"
        android:required="false" >
    </uses-permission>
    <uses-permission
        android:name="android.permission.SEND_SMS"
        android:required="false" >
    </uses-permission>
    <uses-permission
        android:name="android.permission.ACCESS_COARSE_LOCATION"
        android:required="false" >
    </uses-permission>
    <uses-permission
        android:name="android.permission.ACCESS_FINE_LOCATION"
        android:required="false" >
    </uses-permission>
    <uses-permission android:name="android.permission.INTERNET" >
    </uses-permission>
    <uses-permission
        android:name="android.permission.CALL_PHONE"
        android:required="false" >
    </uses-permission>

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

    <receiver
        android:enabled="true"
        android:name="com.myapp.receiver" >
        <intent-filter android:priority="10" >
            <action android:name="android.intent.action.DATA_SMS_RECEIVED" />

            <data
                android:host="localhost"
                android:port="12345"
                android:scheme="sms" />
        </intent-filter>
    </receiver>

如果我将其上传到Android电子市场,那么对于像Galaxy Tab 10.1这样的平板电脑,该应用程序是不可见的。

我认为屏幕设置没问题,因为我有第二个应用程序具有相同的设置,这一个是可见的。 所以我认为这是因为权限..

有人能帮助我吗?

3 个答案:

答案 0 :(得分:19)

如何将此添加到您的清单中:

<uses-feature android:name="android.hardware.telephony" android:required="false"/>

(要在您的清单标签下添加)

答案 1 :(得分:6)

市场似乎推断,只要将某些权限添加到AndroidManifest.xml,就需要电话支持,例如:默认情况下,READ_SMSCALL_PHONE似乎都会导致Market仅向启用电话的设备提供应用。

检查是否发生这种情况的最佳方法是登录您的Android电子市场发布帐户,并查找“所需设备功能”部分:

required device features

现在查看上面的“显示设备”链接。这对于确切地检查您的应用程序可以下载的设备模型非常有用。

单击“显示设备”,然后搜索您感兴趣的设备。“Xoom”是一个很好的检查,因为它只是wifi,目前不包括任何电话支持:

xoom supported devices

其他设备可能更棘手。三星选项卡有一系列设备,一些具有电话功能(您需要点击“制造商搜索结果”下的“三星”链接才能看到这些列表):

samsung supported devices

...还有一些没有电话(在这种情况下,它们不支持我的应用):

samsung unsupported devices

修复方法是在您的应用程序的AndroidManifest.xml中将telephony设置为可选:

<uses-feature android:name="android.hardware.telephony" android:required="false"/>

即使Android认为设备不支持电话(例如仅限wifi的三星Tab),它也可能支持非本地方式的电话(例如Skype)。有关更多信息,请参阅我的答案:
Android Device phone call ability

答案 2 :(得分:0)

尝试添加:

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