Смена названия лаунчера в новой версии приложения - PullRequest
4 голосов
/ 24 февраля 2012

Я разработал новую версию приложения и изменил название запускаемой деятельности.

До обновления в манифесте было:

    <activity
              android:name=".Splash"
              android:label="@string/app_name"
              android:screenOrientation="portrait"
              android:theme="@android:style/Theme.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

, а затем я только изменил название и пакет упражнения, и теперь это:

    <activity
              android:name=".view.SplashActivity"
              ... >
                    ...
    </activity>

происходит то, что после того, как люди скачивают приложение с маркета, панель запуска не обновляется и все равно обращается к старому пути к действию.

Вы знаете, как решить эту проблему?

Ответы [ 2 ]

7 голосов
/ 25 февраля 2012

См. Вещи, которые не могут измениться

В нем говорится,

Тонким, но важным аспектом нарушения совместимости является атрибут android: nameвашей деятельности, услуг и компонентов получателя.Это может быть удивительно, потому что мы думаем, что android: name указывает на частный код, реализующий наше приложение, но это также (в сочетании с именем пакета манифеста) официальное уникальное публичное имя для этого компонента, представленное классом ComponentName.

Изменение имени компонента внутри приложения может иметь негативные последствия для ваших пользователей.Вот некоторые примеры:

  • Если имя основного действия вашего приложения изменилось, любые ярлыки, сделанные пользователем, больше не будут работать.Ярлык - это Намерение, которое непосредственно указывает имя компонента, которое должно быть запущено.
  • Если имя службы, реализующей Живые обои, изменится, то у пользователя, включившего ваши Живые обои, будут восстановлены обои для системы по умолчанию.при получении новой версии вашего приложения.То же самое верно для методов ввода, служб специальных возможностей, новых расширенных виджетов Honeycomb и т. Д.
  • Если имя получателя, реализующего администратор устройства, изменится, то, как и в примере с живыми обоями, администратор устройства будетотключить при обновлении приложения.Это также относится к другим типам приемников, таким как виджеты приложений.

Поэтому, если возможно, не изменяйте имя компонентов, объявленных в манифесте, или удаляйте любые значки, указывающие на это.компонента, используя приведенный ниже код.

ComponentName componentToDisable = new ComponentName("application.package.name", "packagename.ActivityClassName");
getPackageManager().setComponentEnabledSetting(componentToDisable, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

Также укажите новое действие запуска в манифесте, используя <intent-filter>...</intent-filter>, чтобы ваше новое действие было запущено, когда пользователь нажимает значок запуска.

0 голосов
/ 25 февраля 2012

Правильно ли вызывается действие, если вы запускаете действие в режиме отладки на своем телефоне.

Если это так, проверьте, что вы сделали что-то из следующего:полное имя пакета

вы подписали его совсем или неправильно

Также вы можете проверить http://developer.android.com/guide/publishing/publishing_overview.html

В любом случае.Если приложение корректно работает на вашем телефоне для отладки, значит, что-то не так с вашими параметрами публикации, и вы должны шаг за шагом перейти на страницу выше.

Если нет, вы можете проверить значения пути, такие как пакет и имяактивность и фильтры.

...