intent和intentfilter
intent 和intent Filters
startActivity()的机制
用到了IBinder ipc 用到了进程间通讯机制
activity有四种LaunchMode
当startActivity()的时候不知道启动的是不是和自己的activity在一个
进程中。所以要用 IPC 进程间通讯来调用
简单的使用方法
1
A.class中
1
2
3
|
Intent
intent = new Intent(A. this ,
B. class ); intent.putExtra( "sundy.demo" , "你好" ); startActivity(intent); |
B.class中
1
2
3
|
Intent
intent = this .getIntent(); String value
= intent.getExtras().getString( "key" ); Toast.makeText( this ,
value, 1 ).show(); |
2
A.class中
1
2
3
4
|
Intent
intent = new Intent(); intent.putExtra( "key" , "123" ); intent.setAction( "com.wang.cn" ); startActivity(intent); |
B。
class中
.
1
2
3
|
Intent
intent = this .getIntent(); String value
= intent.getExtras().getString( "key" ); Toast.makeText( this ,
value, 1 ).show(); |
要在mainfest中设置B。clas的activity中的intent-filter的action中设置
1
2
3
4
5
6
7
|
<activity
android:name= ".B" > <intent-filter> <action
android:name= "com.wang.cn" /> <category
android:name= "android.intent.category.DEFAULT" /> </intent-filter> </activity> |
必须写上 <category android:name="android.intent.category.DEFAULT" />这一句不然会报错。。
3. 简单的打电话 代码
1
2
3
4
5
|
Intent
intent = new Intent(); intent.setAction(Intent.ACTION_DIAL); intent.setData(Uri.parse( "tel:12345645555" )); startActivity(intent); |
setAction和setData都是系統定義好 。這裡仅仅說下使用方法
4.获取data中的值
A。class中
1
2
3
4
|
Intent
intent = new Intent(); intent.setAction( "com.wang.cn" ); intent.setData(Uri.parse( "tel:12345645555" )); startActivity(intent); |
B。class中
1
2
3
4
|
Intent
intent = this .getIntent(); String uri
= intent.getDataString(); Toast.makeText( this ,
uri, 1 ).show(); |
setAction和setData都是系統定義好 。這裡仅仅說下使用方法
1
2
3
4
5
6
7
8
9
10
|
<activity
android:name= ".Rose" > <intent-filter> <action
android:name= "com.wang.cn" /> <category
android:name= "android.intent.cat
egory.DEFAULT" /> <data
android:scheme= "tel" > </data> </intent-filter> </activity> |
5.startActivityForResult 方法
A。
class中
1
2
3
|
Intent
intent = new Intent(); intent.setClass(A. this ,B. class ); startActivityForResult(intent, 123 ); |
在A。
clas的activity中 导入系统的onActivityResult方法
1
2
3
4
5
6
7
8
9
|
@Override protected void onActivityResult( int requestCode, int resultCode,
Intent data) { //
TODO Auto-generated method stub super .onActivityResult(requestCode,
resultCode, data); if (resultCode
== 321 )
{ String value
= data.getExtras().getString( "name" ); Toast.makeText( this ,
value, 1 ).show(); } } |
B.class中
1
2
3
4
5
6
7
8
9
10
11
|
button.setOnClickListener( new OnClickListener()
{ @Override public void onClick(View
arg0) { Intent
intent = this .getIntent(); intent.putExtra( "name" , "111111111" ); setResult( 321 ,
intent); finish(); } }); |
当resultCode一样的时候 回传值成功。。
6.intent 传递 对象 类 等等