Начать намерение для псевдонима активности

Я настроил псевдоним для действия с другими метаданными.

В этих метаданных я задаю имя фрагмента, который затем загружаю по отражению.
Я не знаю, является ли это "чистым" решением, хотя, используя фрагменты и помещая функциональность внутрь, у меня была одна 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);
Другие вопросы по тегам