Начать намерение для псевдонима активности
Я настроил псевдоним для действия с другими метаданными.
В этих метаданных я задаю имя фрагмента, который затем загружаю по отражению.
Я не знаю, является ли это "чистым" решением, хотя, используя фрагменты и помещая функциональность внутрь, у меня была одна SuperActivity и 2 пустых SubActivities, просто чтобы указать каждое из них в манифесте.
Вопрос сейчас: могу ли я создать псевдоним с помощью намерения? new Intent(Context, Class)
не будет работать, потому что я не могу найти способ настроить метаданные с помощью намеренного вызова.
Мне нужно начать намерение <activity android:name="XXX"/>
Есть ли простой способ сделать это?
Общая деятельность и ее псевдоним, мне нужно новое намерение последнего:
<activity
android:name="ActivityList"
android:label="@string/app_name"
android:launchMode="singleTop"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.default_searchable"
android:value="ActivityListItem" />
<meta-data
android:name="fragment"
android:value="FragmentLocationList" />
</activity>
<activity-alias
android:name="ActivityListItem"
android:label="@string/locations"
android:parentActivityName="ActivityList"
android:targetActivity="ActivityList" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
<meta-data
android:name="android.app.default_searchable"
android:value="ActivityListItem" />
<meta-data
android:name="fragment"
android:value="FragmentItemList" />
</activity-alias>
1 ответ
Чтобы указать псевдоним, вам нужно использовать setComponent(ComponentName)
на пустой объект Intent().
Я склонен устанавливать запись манифеста как относительное имя
<activity-alias
android:name=".ActivityListItem"
(обратите внимание на точку в начале имени), а затем сформируйте ComponentName для намерения, используя
Intent intent = new Intent();
String packageName = context.getPackageName();
ComponentName componentName = new ComponentName(packageName,
packageName + ".ActivityListItem");
intent.setComponent(componentName);