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会自动弹出对话框让你进行选择。
本文转自 最牛傻蛋 51CTO博客,原文链接:http://blog.51cto.com/zuiniuwang/718325,如需转载请自行联系原作者