Подтвердить что ты не робот

Нужно ли название активности в AndroidManifest.xml начинаться с точки?

Требуется ли запустить имя активности с точкой ('.') в файле манифеста.? например, деятельность  ContactManager начинается с '.'

<activity android:name=".ContactManager" android:label="@string/app_name">

где в качестве действия ContactAdder отсутствует точка

<activity android:name="ContactAdder" android:label="@string/addContactTitle">

в файле манифеста примера ContactManager http://developer.android.com/resources/samples/ContactManager/AndroidManifest.html

ОБНОВЛЕНИЕ: начинается с имени действия. он добавляется к имени пакета, чтобы стать полностью квалифицированным именем, но что произойдет, если он не начинается с..

4b9b3361

Ответ 1

Мне тоже было любопытно, и я искал его в исходном коде Android.

Я нашел то, что кажется соответствующим кодом в репозитории platform/frameworks/base, в файле tools/aapt/Resource.cpp. Соответствующая функция fullyQualifyClassName, вызываемая massageManifest.

Применяемое правило объясняется в блоке комментариев в функции fullyQualifyClassName:

// asdf     --> package.asdf
// .asdf  .a.b  --> package.asdf package.a.b
// asdf.adsf --> asdf.asdf

Объясняя это правило, мы имеем:

  • Если имя начинается с точки, всегда префикс его с пакетом.
  • Если имя имеет точку в другом месте, не префикс.
  • Если имя не имеет точки вообще, также префикс его с пакетом.

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


В качестве дополнительной функции massageManifest показано, где применяется это правило:

  • В элементе application атрибуты name и backupAgent.
  • В activity, service, receiver, provider и activity-alias элементах по атрибуту name.
  • В элементе activity-alias в атрибуте targetActivity.

Ответ 2

Из Android Dev Guide < активность > ссылка:

Название класса, который реализует деятельность, подкласс Деятельности. Значение атрибута должно быть полностью имя квалифицированного класса (например, "Com.example.project.ExtracurricularActivity" ). Однако, как стенография, если первый характер имени - это период (для например, ". ExtracturricularActivity" ), он добавляется к имени пакета указанный в элементе. По умолчанию нет. Имя должно быть указано.

Ответ 3

Недавно я понял концепцию пакета приложений в Android и ответ на этот вопрос, подумал, что должен поделиться им.

Если пакет приложений (указанный в манифесте) совпадает с пакетом java, в котором присутствует действие, то нет необходимости указывать полное имя пакета в манифесте для действий. Если имя пакета приложения отличается от имени пакета java, тогда имя активности должно быть заполнено именем пакета.

Это сообщение в блоге предоставляет информацию о пакете приложений и java-пакетах в android.

http://blog.javia.org/android-package-name/comment-page-1/#comment-14063