Intent意图:先说一个A应用程序想使用B应用程的某个某个Activity的方法。,作为信使的Intent主要由三部分构成:Intent<Action,Data,Category>;
- Intent i = new Intent();
- ComponentName cn = new ComponentName("com.example.b",
- "com.example.b.BActivity");
- i.setComponent(cn);
- startActivity(i);
就是这儿简单,前提A已经安装。
另外最常用的就是实现不同的活动之间的跳转,启动服务,发送广播,实现方式如下:
- 通过
orContext.startActivity()
启动一个Activity;Activity.startActivityForResult()
- 通过
启动一个服务,或者通过Context.startService()
和后台服务交互;Context.bindService()
- 通过广播方法(比如
,Context.sendBroadcast()
,Context.sendOrderedBroadcast()
) 发给broadcast receiversContext.sendStickyBroadcast()
intent 可以存储一个bundle来在不同的Activity之间传送信息,传送结果。
关于Action
intent中ACTION的值是双向的,发送方发给接受方中的ACTION值能够被双方了解;这样在发送方中,自定义ACTION的值;在接受方中,Intent-filter中的ACTION值要与自定义的值相同,这样才能够正确接受Intent
举个例子一下明白:
在A的java中定义ACTION的值,并将其发送出去,如下
public static final String myACTION="B.ACTION";
Intent intent=new Intent(myACTION);
startActivity(intent);
在B中的Androidmanifest.xml文件中,添加如下activity的intent-filter
<intent-filter>
<action android:name="B.ACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
其他的实在不好记,用的时候再说吧。