2012-02-14 3 views
0

Для работы я поддерживаю внутренний «рынок», где можно загружать и загружать новые версии приложений. Я также поддерживаю пусковую установку, которая может выбирать из наших многочисленных приложений и запускать их (некоторые из них одинаковы для приложений «по-разному»). В настоящее время я могу заполнить этот список с именем пакета и кодом версии, но я также хотел бы добавить в ветвь SVN.Android: Пользовательские атрибуты приложения, доступные диспетчером пакетов?

Я думал о наличии сценария, который бы добавлял информацию о ветке как XML либо в манифест как в качестве настраиваемого атрибута, либо как отдельный XML-файл. В идеале это может быть доступно публично PackageManager. Это возможно?

В качестве альтернативы, я могу программно изменить имя APK? Тогда я мог бы использовать «$ name - $ branch» в качестве нового имени.

ответ

2

Я думал о наличии сценария, который добавит информацию о ветвях как XML либо в манифест как в качестве настраиваемого атрибута, либо как отдельный XML-файл. В идеале это может быть доступно публично PackageManager. Это возможно?

Вы должны добавить <meta-data> элемент элемента а компонента (например, <activity>) и получить доступ к содержимому XML метаданных с помощью PackageManager:

<receiver android:name="com.commonsware.cwac.wakeful.AlarmReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 

     <meta-data 
      android:name="com.commonsware.cwac.wakeful" 
      android:resource="@xml/wakeful"/> 
    </receiver> 

Компонент будет доступ к метаданным через код так:

PackageManager pm=ctxt.getPackageManager(); 
ComponentName cn=new ComponentName(ctxt, getClass()); 
ActivityInfo ai=pm.getReceiverInfo(cn, PackageManager.GET_META_DATA); 
XmlResourceParser xpp=ai.loadXmlMetaData(pm, "com.commonsware.cwac.wakeful"); 

Ваш пользовательский процесс сборки может затем настроить ресурс XML, на который указывает <meta-data>, чтобы содержать все, что вы хотите.

В качестве альтернативы, я могу программно изменить имя APK?

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

+0

Очень тщательный и полезный ответ. Что касается имени APK, я имел в виду имя приложения. –

+0

@galaxyinfinite: Если под именем «application name» вы подразумеваете значение атрибута 'android: name' на' ', вы можете это изменить. Проще всего было бы сохранить его как строковый ресурс и обновить этот ресурс (возможно, в его собственном файле). Таким образом, вам не нужно суетиться с 'PackageManager' и может просто вызвать' getString (R.string.app_name) '(или что-то еще) для извлечения значения. Хотя, в этом отношении, вы могли бы просто создать * новый * строковый ресурс и оставить имя приложения в одиночку. – CommonsWare

+0

Возможно, я не понимаю, но я не верю, что 'PackageManager' может получить доступ к строкам других приложений. Мне нужно иметь доступ к этой строке извне приложения, поэтому кажется, что ваше решение «метаданные» является лучшим. –

 Смежные вопросы

  • Нет связанных вопросов^_^