6

我使用各种手机和平板电脑模拟器以及 4 个真实设备开发和测试了我的应用程序:Samsung Galaxy Ace (GT-I8160P)、Samsung Galaxy Tab 2 (GT-P5110 和 GT-P3110) 和 Storex M977。经过 5 个月的工作和测试,该应用程序在所有这些设备上都能正常运行。所以我把它上传到谷歌播放。但 Google Play 表明它与我的平板电脑不兼容。我无法在我的 Galaxy Tab 上使用 Google Play 安装它...

我不知道是什么问题。我添加了支持屏幕部分但没有成功。我有点绝望,所以我还使用 required="false" 添加了这些使用功能:GPS、网络、电话、WIFI、位置、触摸屏,即使应用程序在没有这些使用功能的情况下也能正常工作。结果相同。我还删除了“TargetSdk”。Google Play 说我的应用程序兼容 2339 台设备,包括一些 Galaxy Tab,但不兼容我的标签。只有 Galaxy Ace 可以从 Google Play 安装它。

这是我的清单文件(出于保密原因,我刚刚将包原始包名称替换为 fr.test.app )。我做错了什么?

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.test.app"
android:versionCode="7"
android:versionName="1.2" >

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

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


<uses-feature android:name="android.hardware.WIFI" android:required="false" />
<uses-feature android:name="android.hardware.GPS" android:required="false" />
<uses-feature android:name="android.hardware.TELEPHONY" android:required="false" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.LOCATION" android:required="false" />
<uses-feature android:name="android.hardware.NETWORK" android:required="false" />
<uses-feature android:name="android.hardware.TOUCHSCREEN" android:required="false" />

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CAMERA.FRONT"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<permission android:name="fr.test.app.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" />
<uses-permission android:name="fr.test.app.permission.C2D_MESSAGE" />



<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    >


    <receiver
        android:name="com.google.android.gcm.GCMBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <!-- Receives the actual messages. -->
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <!-- Receives the registration id. -->
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="fr.test.app" />
        </intent-filter>
    </receiver>
    <service android:name=".GCMIntentService" />      

    <receiver 
        android:name=".OnBootReceiver" 
        android:enabled="true" 
        android:exported="false" android:label="OnBootReceiver"> 
        <intent-filter> 
            <action android:name="android.intent.action.BOOT_COMPLETED" /> 
            <action android:name="android.intent.action.MAIN" />
        </intent-filter> 
    </receiver> 
    <receiver  
        android:process=":remote" 
        android:name="fr.test.app.Alarm">           
    </receiver>        
    <receiver  
        android:process=":remote" 
        android:name="fr.test.app.CamAlarm">            
    </receiver>        
    <receiver android:name=".MyAdmin" android:permission="android.permission.BIND_DEVICE_ADMIN">  
        <meta-data android:name="android.app.device_admin" android:resource="@layout/policies">  
            <intent-filter>  
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED">  
                </action>

            </intent-filter>  
        </meta-data>        
    </receiver>
    <service 
        android:name=".BbSvc" android:enabled="true" 
        android:exported="false" 
    />         

    <service 
        android:name=".WpsLoc" android:enabled="true" 
        android:exported="false"
    />

    <service 
        android:name=".Cam" android:enabled="true" 
        android:exported="false"
    />

    <service 
        android:name=".MniRec" android:enabled="true" 
        android:exported="false"
    />

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" 
        android:configChanges="keyboardHidden|orientation">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" /> 
        </intent-filter>
    </activity>
    <activity
        android:name=".reminder"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <!--
            <category android:name="android.intent.category.LAUNCHER" /> 
             <category android:name="android.intent.category.DEFAULT" /> -->
        </intent-filter>
    </activity>
    <provider android:name="fr.test.app.AndroidProvider"
          android:authorities="fr.test.app.AndroidProvider" 
          android:exported="false"/> 
</application>

4

4 回答 4

1

对于任何偶然发现此问题的人,Android 有一个很好的权限和过滤指南供将来参考。这包括使用某些权限时隐含的硬件功能的完整列表。(它在底部。)

http://developer.android.com/guide/topics/manifest/uses-feature-element.html

这要么是文档的新增内容,要么真的很难找到。XD

于 2013-06-05T23:30:37.383 回答
1

<uses-feature>属性区分大小写,需要用小写字母书写。除了你已经拥有的,我还要补充:

<uses-feature android:name="android.hardware.telephony.cdma" android:required="false"/>
<uses-feature android:name="android.hardware.telephony.gsm" android:required="false"/> 
<uses-feature android:name="android.hardware.location.gps" android:required="false"/>
<uses-feature android:name="android.hardware.location.network" android:required="false"/>
于 2016-10-11T12:24:04.183 回答
0

我认为问题是振动权限。你确定你的设备有振动吗?

于 2014-03-11T20:12:24.037 回答
0

在某些情况下Google Play会告诉您设备不兼容的原因:

  1. 在桌面计算机上打开 Google Play:https: //play.google.com/store
  2. 导航到您的应用程序,然后单击Install按钮
  3. 打开设备下拉列表,查看不兼容设备下方是否有摘要:

截屏

于 2017-03-30T08:51:39.313 回答