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 传递 对象 类  等等


上一篇:剑指Offer_编程题_18


下一篇:【JAVA】笔记(3)---封装;如何选择声明静态变量还是实例变量;如何选择声明静态方法还是实例方法;静态代码块与实例代码块的执行顺序与用途;