【问题标题】:My application is not listed for tablets我的应用程序未列出用于平板电脑
【发布时间】:2013-07-25 09:37:54
【问题描述】:

我已将一个新应用程序上传到 play.google.com:

https://play.google.com/store/apps/details?id=development.nk.anguide

问题是我无法在平板电脑中安装此应用程序。 在优化提示中有以下消息: “您的 APK 需要满足以下条件: 任何所需的硬件功能通常都可以在平板电脑上使用。”

这是我的清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="development.nk.anguide"
android:versionCode="2"
android:versionName="1.01" >

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

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

<permission
    android:name="development.nk.anguide.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-feature 
    android:glEsVersion="0x00020000"
    android:required="false" />

<uses-permission android:name="development.nk.anguide.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!--  ΝΟΜΙΖΩ ΔΕΝ ΧΡΕΙΑΖΟΝΤΑΙ ΤΑ 2 ΠΑΡΑΚΑΤΩ... -->
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />


<application
    android:allowBackup="true"
    android:icon="@drawable/icon_144_144"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="development.nk.anguide.xxxxxxxx"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".DetailForm"></activity>
    <activity android:name=".MapActivity"></activity>
    <activity android:name=".MapAllActivity"></activity>
    <activity android:name=".EditPreferences"></activity>
    <activity android:name=".Categories"></activity>
    <activity android:name=".SubCategory"></activity>
    <activity android:name=".CategoriesExpandableList"></activity>

    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value=".......my API key .............." />
    </application>

很奇怪的想法是,我可以通过 USB 电缆将我的应用程序安装在我的平板电脑上,然后从 Eclipse 中正常运行它......

那么我应该改变什么才能从平板电脑下载?

提前感谢您阅读我的问题..

【问题讨论】:

  • 如果您错过了,现在您的应用程序可见并且与我的平板电脑兼容(Galaxy Tab 2 和 Asus Transformer Pad TF300T)。不要忘记接受答案 ;-) !

标签: android manifest tablet


【解决方案1】:

我认为问题出在这里:

<!--  ΝΟΜΙΖΩ ΔΕΝ ΧΡΕΙΑΖΟΝΤΑΙ ΤΑ 2 ΠΑΡΑΚΑΤΩ... -->
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

试试这个:

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

此问题已被提出,请参阅this post 了解更多信息。此外,如果您的目标是平板电脑和手机,则无需在代码上写下此内容,恕我直言:

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

我不在我的应用程序中使用它。

【讨论】:

  • 所以您的意思是,要支持平板电脑和智能手机,您不应该使用supports-screens,而是使用电话uses-feature?这有什么意义?
  • @N.K.,删除这 2 个权限,将它们替换为 uses-feature 标记将使您的应用崩溃!
  • 我删除了这两个权限,我的应用没有崩溃!现在我在 play.google.com 上传了新版本,我会等待。与此同时,优化提示消失了!所以我的状态很好.. 只是等待..
  • @N.K.,如果它没有崩溃那是因为你不需要它们 :)
  • @yugidroid 不,我没有提及你在第一条评论中所说的内容,我只建议删除支持屏幕以针对每种类型的设备。 N.K.如果我是对的,我会判刑:-)。
【解决方案2】:

只要您正确定义应用程序的目标 SDK 以使用它们,您就可以使用来自 eclipse 的 USB 电缆将任何应用程序安装到任何设备(智能手机/平板电脑)中。

虽然商店不会识别它,除非你使用某种“过滤器”来做到这一点。

要解决您的问题,请将android:requiresSmallestWidthDp 添加到supports-screens 标记中。

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

600(dp 单位)意味着所有设备必须至少有 600dp 的最小可用区域宽。这与 7 英寸或更高的屏幕相同。或者,对于 10 英寸屏幕的最小宽屏幕,您可以使用 720(dp 单位)。

请查看here 以获取有关android:requiresSmallestWithDp 的更多详细信息

【讨论】:

  • 如果我添加 android:requiresSmallestWidthDp="600" 那么我是否也可以在手机上安装这个应用程序?
  • 来自 developer.android.com: 注意:Android 系统不关注此属性,因此它不会影响您的应用程序在运行时的行为方式。相反,它用于为您的应用程序在 Google Play 等服务上启用过滤。但是,Google Play 目前不支持此属性进行过滤(在 Android 3.2 上),因此如果您的应用程序不支持小屏幕,则应继续使用其他尺寸属性。
  • 是的!但是您必须确保您拥有所有必要的资源来实现这一点。您必须有 drawable-sw600-xhdpi、drawable-sw600-hdpi 等和用于平板电脑的 layout-sw600 和用于智能手机的默认设置。如果您只有drawable-xhdpilayout,那么它们将被用于智能手机和平板电脑,但可能缩放不佳。请确保您拥有适合所有设备尺寸的图片。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多