Как запустить другое действие, если у вас есть имя действия строка, но не класс деятельности. - PullRequest
1 голос
/ 10 января 2012

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

Я могу получить имя Acitivity, которое я хотел бы начать с менеджера пакетов, но как я могу как-то разобрать это и превратить в намерение? Имея в виду, я не могу получить доступ к классу ... Также я хотел бы начать эту конкретную деятельность и не запускать ОСНОВНОЕ намерение из пакета ...

Я уверен, что кто-то где-то это делает ... Это что-то вроде деятельности, не так ли?

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Предполагая, что у вас есть следующее в вашем AndroidManifest.xml

    <!-- The askUser dialog activity -->
    <activity android:theme="@android:style/Theme.Dialog"
              android:name="my.app.AskUserActivity" 
              android:excludeFromRecents="true"
              android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="my.app.intents.AskUserConfirmConnect"/>
            <category android:name="android.intent.category.DEFAULT" />                
        </intent-filter>
    </activity>     

Затем вы можете вызывать это действие по имени, например:

Intent dlgIntent = null;

dlgIntent = new Intent("my.app.intents.AskUserConfirmConnect");
dlgIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
dlgIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
context.startActivity(dlgIntent);
1 голос
/ 10 января 2012

Вы можете использовать setClassName (String, String) в Intent, чтобы избежать необходимости в другом классе.

...