Intent隐式调用

Intent的两种基本用法:

  • 显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似;

  • 隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,有利于降低发送者和接收者之间的耦合。

显示调用 :

1
2
3
4
Intent intent = new Intent();
intent.setClass(A.this,B.class);
intent.setClassName("com.android.activity",B.class);
startActivity(intent);

隐式调用:

1.首先在应用A的某个类中:

1
2
3
4
5
Intent intent = new Intent();
intent.setAction("com.android.activity");//"com.android.activity"为自定义action
//Intent intent = new Intent("com.android.activity");或者使用这种写法
intent.putExtra("KEY","VALUE");//传递数据
startActivity(intent);

2.在应用B中接收A发来的action:

如果DemoActivity是程序的入口:

1
2
3
4
5
6
7
<activity android:name=".DemoActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"
<action android:name="com.android.activity" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

如果DemoActivity不是程序的入口:

1
2
3
4
5
6
<activity android:name=".DemoActivity">
<intent-filter>
<action android:name="com.android.activity" />
<category android:name="android.intent.category.DEFAULT" /><!--必须加,不要遗漏-->
</intent-filter>
</activity>

以上简单的介绍了从一个程序使用隐式意图打开另一个应用activity的用法。这种用法在只有一个app的情况下应用较少,主要应用于存在有相互调起的逻辑的应用之间。与显示意图相同,同样可以通过putExtra()方法传递数据。