intent意思是意图, 安卓程序的组件之间进行交互的重要方式 ,分为显示意图和隐式意图;
显示意图
创建一个意图,然后调用startActivity 方法
Intent intent = new Intent(this,XXX.class);
startActivity(intent);
隐式意图
比较含蓄,不指定具体哪个活动,指定一些列抽象的action和category等信息,
在清单文件中新增加
<activity android:name=".SS" >
<intent-filter>
<action android:name="ssss.CCCC"></action>
<category android:name="android.intent.category.DEFAULT"></category> 一个意图可以有多个category(类型种类)
</intent-filter>
</activity>
代码跳转时候也增加对用的
intent.addCatagory("android.intent.category.DEFAULT");
然后在开始传递就可以了。但是这个默认的时候可以不写,其他如果不写就会 报错
隐式意图和显示意图的最大区别在于和其他程序之间,隐式意图可以调其他的、
还有更多的隐式意图的使用,用的相对比较多的就是调电话拨号,打开网页,等:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("www.baidu.com")); ** 使用这句话 报错 更换 intent.setData(Uri.parse("http://www.baidu.com")); 这里并没有给权限**
startActivity(intent);
调用打电话的代码:
这个Dial和Call还是有区别的一个是让他显示在拨号页,具体打不打电话用户自己定
调用打电话: Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
数据的传递
使用intent数据传递一般都是使用:
Intent intent = new Intent(MainActivity.this,SS.class);
intent.putExtra("gggg","我居然忘记了这么多");
intent.putExtra("g",2);
startActivity(intent);
但是我们很多时候是在第一个界面传递数据要等到第二个页面返回数据给第一个界面,这个时候就用到了startActivityForReslut(), 这个 方法期望在活动销毁的时候返回数据给上一个活动 接受2个参数 一个是请求码 一个是邀请码
Intent intent = new Intent(MainActivity.this,SS.class);
intent.putExtra("gggg","我居然忘记了这么多");
intent.putExtra("g",2);
startActivityForResult(intent,213); 这里的 213是一个请求码。
在 第二个页面接收:这里重点是setResult()这个方法
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("二给一得","woshi二给一得 意图内容");
setResult(RESULT_OK,intent); ok 或者是canceled
finish();
然后在第一个界面中去接受第二个界面回传的内容,重写onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode ==213){ 一般是写switch
if(resultCode == RESULT_OK){
String s = data.getStringExtra("二给一得");
tt.setText(s);
}
}
}