Intent用法

显示Intent

事件代码

Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);

隐式Intent

AndroidManifest.xml文件添加如下代码:

 <intent-filter>
     <action android:name="jackie.studio.activitytest.ACTION_START"/>
     <category android:name="android.intent.category.DEFAULT"/>
 </intent-filter>

事件代码:

Intent intent=new Intent("jackie.studio.activitytest.ACTION_START");
startActivity(intent);

只有<action>和<category>同时匹配Intent中指定的action和category时,这个活动才能响应。

每个Inten中只能指定一个action,但能指定多个category。

 <intent-filter>
     <action android:name="jackie.studio.activitytest.ACTION_START"/>
     <category android:name="android.intent.category.DEFAULT"/>
     <category android:name="android.intent.category.DEFAULT"/>
     <category android:name="android.intent.category.MY_CATEGORY"/>
 </intent-filter>

事件代码:

Intent intent=new Intent("jackie.studio.activitytest.ACTION_START");
intent.addCategory("android.intent.category.MY_CATEGORY");
startActivity(intent);

隐式Intent的其他用法

隐式Intent不仅可以启动自己程序内的活动,还可以启动其他程序的活动,比如调用浏览器,打电话等等。
调用浏览器:

Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

打电话:

Intent intent=new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);

活动间传递数据

向下传递

String data="Hello Android";
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("mydata",data);
startActivity(intent);
Intent intent=getIntent();
String data=intent.getStringExtra("mydata");

向上传递

第一个Activity,添加如下代码

Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);//请求码设置为1,唯一就行

第二个Activity,添加如下代码

@Override
public void onBackPressed() {
    Intent intent=new Intent();
    intent.putExtra("data_return","Hello FirstActivity");
    setResult(RESULT_OK,intent);
    Log.d("jzDebug","backing");
    finish();
}

第一个Activity,添加如下代码

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode){
        case 1:
            if (resultCode==RESULT_OK){
                String returnedData=data.getStringExtra("data_return");
                Log.d("jzDebug",returnedData);
            }
            break;
        default:
            Log.d("jzDebug","sth wrong");
            break;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值