如果您有活动名称字符串而不是活动.Class,如何启动另一个活动?

时间:2012-01-10 15:41:31

标签: android android-activity android-intent package-managers

我遇到了从我开始其他活动的问题。我知道这必须在其他地方完成,因为有太多的启动器应用程序,很多使用包管理器来启动特定的活动......

我可以从包管理器中获取一个Acitivity名称,但是我怎么能以某种方式解析它并将其转换为意图?请记住,我无法访问该课程......此外,我想开始这个特定的活动,而不是从包中启动MAIN意图......

我确定有人必须在某个地方这样做......活动的重点是什么?

2 个答案:

答案 0 :(得分:3)

假设您在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 :(得分:1)

您可以在Intent上使用setClassName(String, String)以避免需要其他类。