Intent有两种调用方法,一种是显示调用。一种是隐式调用。
1. 显示调用,也就是我们最常用的。
使用的Intent构造函数如下: Intent(Context packageContext, Class<?> cls)
在同一个进程中,一个Activity 调用另外一个Activity 。
Intent intent = new Intent(this, TestActivity.class); startActivity(intent); |
当然我们也可以在不同应用程序之间,也就是不同的进程之间启动Activity。
使用的Intent 构造函数:Intent(Context packageContext, Class<?> cls) 第一个是包名,第二个时Activity类名
Intent intent = new Intent(); intent.setClassName("com.androidtest", "com.androidtest.AndroidTest"); main.this.startActivity(intent); |
这时候一定要修改AndroidManifest.xml 文件
在 activity 的 申明中加上<intent-filter> 如下:
<activity android:name=".TestActivity"> <intent-filter> <action android:name="android.intent.action.DEFAULT" /> </intent-filter> </activity> |
2. 隐式调用
比如我们调用打电话的Activity。就要使用隐式调用了: Intent(String action); 代码如下:
Intent intent = new Intent(Intent.ACTION_DIAL); startActivity(intent); |
这种使用方式看上去比较奇怪,Intent的发送者只是指定了Action为Intent.ACTION_DIAL,那么怎么找到接收者呢?
我们自己的程序能不能接受这个Intent呢?答案是可以的,修改程序的Intent-fliter 加上这几句话变可。如:
<activity android:name=".TestActivity"> <intent-filter> <action android:name="android.intent.action.DEFAULT" /> <action android:name="android.intent.action.DIAL" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> |
这样我们的程序也能接收该Intent了。当两个程序都能接收此Intent时,Android会自动弹出对话框让你进行选择。