Не можете использовать android: xlargeScreens = "true"? - PullRequest
15 голосов
/ 08 августа 2011

Я делаю приложение для телефонов, но я не хочу, чтобы их можно было использовать на планшетах.Я не знаю, почему не могу.Я использую это в моем файле манифеста Android:

android:xlargeScreens="true"

Я получаю эту ошибку:

ошибка: не найден идентификатор ресурса для атрибута 'xlargeScreens' в пакете 'android'

Это мой файл манифеста:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="cro.perger.bonbon"
      android:versionCode="5"
      android:versionName="1.4">
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".bonbon"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

            <!-- Broadcast Receiver that will process AppWidget updates -->
        <receiver android:name=".HelloWidget" android:label="@string/w_name">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                </intent-filter>
        <meta-data android:name="android.appwidget.provider"
            android:resource="@xml/hello_widget_provider" />
        </receiver>

        <receiver android:name=".SMSReceiver">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>    

        </application>
        <supports-screens android:resizeable="true"
                      android:smallScreens="true"
                      android:normalScreens="true"
                      android:largeScreens="true"
                      android:xlargeScreens="true"
                      android:anyDensity="true"/>
    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
    <uses-permission android:name="android.permission.READ_SMS"/>
</manifest>

Что мне делать?

Ответы [ 7 ]

13 голосов
/ 08 августа 2011

Пожалуйста, проверьте ваш проект Build Target Для поддержки xlarge экрана ваша цель сборки проекта должна быть как минимум Android 2.3.3 adk.

В Eclipse -? Щелкните правой кнопкой мыши по проекту -> Свойства -> Android -> Выберите Project Build Tagrget как 2.3.3 или более поздней версии

6 голосов
/ 08 августа 2011

Мое приложение поддерживает Android версии 1.5 до последней версии, и это то, что у меня есть в моем манифесте:

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

Это то, что появляется на сайте разработчиков Android Market для моего приложения:

Screen layouts: SMALL NORMAL LARGE XLARGE
Required device features
        android.hardware.touchscreen
This application is available to over 555 devices.

Кроме того, моя цель сборки проекта - 2.3.3, но у меня все еще много установок на устройствах под управлением Android 3.0

И это только предположение, я не уверен в этом, но не включает ли такие разрешения, как CALL_PHONE, фильтровать ваше приложение от поиска на планшете, так как у них нет этой функции?

4 голосов
/ 08 августа 2011

Похоже, вам нужно создавать разные APK для старых и новых версий.Ознакомьтесь с блогом, размещенным на http://android -developers.blogspot.com / search / label / Android% 20Market о поддержке нескольких APK: «Поддержка нескольких APK дает вам множество способов управления распространением приложений.Например, вы можете использовать его для создания отдельных APK-файлов для телефонов и планшетов в одном и том же списке товаров. "

3 голосов
/ 08 августа 2011

Вам нужно использовать хотя бы Android-уровень API 9 для android:xlargeScreens, чтобы быть распознанным в AndroidManifest.xml.

Для этого убедитесь, что в вашем файле default.properties есть target=android-9 или выше. Это также можно установить с помощью свойств проекта в разделе Android.

2 голосов
/ 08 августа 2011

Проблема в том, что ваш minSdkVersion.

Атрибут xlargeScreens был представлен на уровне API 9. Поскольку вы указали, что ваше приложение, вероятно, будет работать на уровне API 4, android не сможетнайдите этот атрибут.

Измените minSdkVersion -атрибут на 11, и он должен работать.

targetSdkVersion -атрибут, который вы установили как 11, указывает только на то, чтоприложение было разработано для этой версии (поэтому оно «рекомендуется»), но minSdkVersion указывает минимальный уровень API, см. здесь .

1 голос
/ 23 апреля 2012

android: xlargeScreens: Этот атрибут был введен в API уровня 9 (Android 2.3.3) .Если ваша цель сборки меньше уровня API 9, то вы получите ошибку "No resource identifier found for attribute 'xlargeScreens' in package 'android"Установите цель сборки на API-уровень 9 или выше, и эта ошибка исчезнет.

1 голос
/ 08 августа 2011

Каков ваш уровень API? В документации сказано, что требуется API 9 или выше. 9 - это 2,3. Смотрите эту ссылку, которая говорит:

android: xlargeScreens Указывает, поддерживает ли приложение дополнительные форм-фактор большого экрана. Экран xlarge определяется как экран это значительно больше, чем «большой» экран, такой как планшет (или что-то большее) и может потребовать особого внимания часть приложения, чтобы эффективно использовать его, хотя оно может полагаться на изменение размера системой для заполнения экрана. Значение по умолчанию для этого на самом деле варьируется между некоторыми версиями, так что лучше, если вы явно объявлять этот атрибут в любое время. Остерегайтесь этой установки «false» обычно включает режим совместимости экрана. это атрибут был введен на уровне API 9.

...