Android Market过滤应用 - 电话?

ElP*_*tzo 8 permissions android 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>
Run Code Online (Sandbox Code Playgroud)

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

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

有人能帮助我吗?

eMi*_*ich 19

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

<uses-feature android:name="android.hardware.telephony" android:required="false"/>
Run Code Online (Sandbox Code Playgroud)

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


Dan*_*n J 6

市场似乎推断,只要某些权限被添加到AndroidManifest.xml,就需要电话支持,例如默认情况下,READ_SMS或者CALL_PHONE两者似乎都导致Market仅向启用电话的设备提供应用程序.

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

所需的设备功能

现在查看上面的"显示设备"链接.这对于准确检查可以下载应用程序的设备模型非常有用.

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

xoom支持的设备

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

三星支持的设备

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

三星不支持的设备

解决方法是在您的应用程序的AndroidManifest.xml中将电话设置为可选:

<uses-feature android:name="android.hardware.telephony" android:required="false"/>
Run Code Online (Sandbox Code Playgroud)

即使Android认为设备不支持电话(例如,仅限wifi的三星Tab),它也可能以非本地方式支持电话(例如Skype).有关详细信息,请参阅此处的答案:
Android设备电话呼叫功能