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