2010-04-21 2 views
2

У меня есть представление в качестве главного экрана приложения, которое содержит действия доступного приложения в виде значков + текстовых пар (например, на рабочем столе).Пользовательские категории Android

Я хочу, чтобы выяснить, какие программно деятельность определены только в моем AndroidManifest.xml

Пусть у меня есть:

< activity android:name="example.mainActivity" android:label="mainActivity"> 
    < intent-filter> 
     < action android:name="android.intent.action.MAIN" /> 
     < category android:name="android.intent.category.LAUNCHER" /> 
    < /intent-filter> 
< /activity> 
< activity android:name="example.activity1" android:label="Activity1"> 
    < intent-filter> 
     < action android:name="android.intent.action.VIEW" /> 
     < category android:name="example.custom.ACTIVITY" /> 
    < /intent-filter> 
< /activity> 
< activity android:name="example.activity2" android:label="Activity2"> 
    < intent-filter> 
     < action android:name="android.intent.action.VIEW" /> 
     < category android:name="example.custom.ACTIVITY" /> 
    < /intent-filter> 
< /activity> 

Я хочу, чтобы в mainActivity для чтения Динамично Activity1 и деятельности2, потому что, когда Я добавляю Activity3, например, он будет автоматически прочитан.

Целевое намерение = новое намерение («android.intent.action.VIEW»); intent.addCategory ("example.custom.ACTIVITY"); Список resolves = getPackageManager(). QueryIntentActivities (намерение, 0);

В списке ПОСТАНОВЛЯЕТ я ожидал иметь две определенные действия, так что я могу получить их метку и изображение и создать значок для рабочего стола

я думал, что это может быть сделано путем определения пользовательской категории, пример. custom.ACTIVITY, а в mainActivity используйте packageManager.queryIntentActivities (Intent intent, int flags), но он, похоже, не работает.

Я действительно хотел бы закодировать его для динамического обнаружения установленных действий в моем приложении. У вас есть идеи о том, как это сделать? Спасибо

ответ

1

В моем приложении я определил действия как «android.intent.action.MAIN» (не «android.intent.action.VIEW»), а также поиска работы, как вы ожидали:

Intent intent = new Intent(Intent.ACTION_MAIN, null); 
intent.addCategory("com.example.ACTIVITY"); 
PackageManager pm = getPackageManager(); 
List<ResolveInfo> list = pm.queryIntentActivities(intent, 0); 

ps, ​​я использовал «com.example», поскольку «пример» не является хорошим примером пространства имен, так как декларация пакета в вашем манифесте должна иметь как минимум два сегмента (см. here)

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