有两种方法可以完成您想做的事情。
- 使用隐式
Intent
- 使用显式
Intent
Refer 意图类型 http://developer.android.com/guide/components/intents-filters.html#Types
- 隐含的
Intent
Declare Intent Filters
为您Activity
在你的AndroidManifest.xml
。通过这样做Android
系统了解什么样的Intents
您的组件(在本例中为您的 MainActivity)可以处理。
<activity
android:name="com.example.counter.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.example.counter.MainAction" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<activity>
现在您将能够启动您的Activity
与相同的Intent
Intent i=new Intent ("com.example.counter.MainAction");
startActivity(i);
如此隐含的Intents
当您不明确知道必须启动哪个 Activity 并且希望 Android 系统决定启动哪个组件时使用。如果系统找到多个可以处理你的Intent的组件,它就会允许用户选择。
注意:可能没有应用程序可以处理您的意图。在这种情况下,当您调用 startActivity() 时,您的应用程序将崩溃。为了避免这种情况,在调用 startActivity() 之前,您应该首先验证系统中是否至少有一个注册的应用程序可以处理该意图。为此,请在您的意图对象上使用resolveActivity()。
- 显式的
Intent
在你的情况下,你应该使用明确的Intent
正如你已经知道哪个Activity
你想开始。所以创建一个Intent
通过传递上下文和您想要启动的组件(Activity)类。
Intent i=new Intent (this,MainActivity.class);
startActivity(i);