Intent 使用总结
2017-02-16 15:19
211 查看
Intent 一般可被用于启动活动、启动服务及发送广播等场景,还可用于组件间传递数据。
Activity类提供一个startActivity()方法,专门用于启动活动,接收一个Intent参数。Activity调用startActivity()方法,调用请求实际是发送给了操作系统的ActivityManager,ActivityManager负责创建Activity实例一、显式Intent的使用
intent在同一个app的两个activity之间进行切换,通常是定义一个显式(explicit)的intent,明确指定了需要启动组件的类名。Intent exlipcitIntent = new Intent(IntentActivity.this, ExplictActivity.class); startActivity(exlipcitIntent);
二、隐式Intent的使用
当想要唤起不同的app来执行某个动作,则必须使用隐式(implicit)的intent,不明确指出所要启动的活动,而是指定一系列抽象的action和category等信息,然后交由系统去分析这个Intent,找出合适的活动去启动。action标签中指明当前活动可响应的动作,category标签更精确指明
当前活动能够响应的Intent中可能带有的category。当action和category中的内容能够匹配Intent中指定的action和category时,这个活动才能响应该Intent。
在AndroidManifest.xml文件中为所想要启动的活动配action、category 等,然后再java代码中启动即可。例如,FirstActivity 中某个组件启动SecondActivity.
<activity android:name=".ActionActivity"> <intent-filter> <action android:name="com.developer.ghhf.intentdemo.START"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.MY_CATEGORY"/> </intent-filter> </activity>
启动时将action的内容传递给Intent,category标签的值可调用intent中的addCategory()方法,更精确的指出要启动的Activity.
Intent intent=new Intent("developer.happy.scripo.ACTION_START"); startActivity(intent);
每个Intent只能指定一个action,但却能指定多个category
三、更多隐式Intent的用法
查看网页Intent intent=new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("https://www.baidu.com/")); startActivity(intent);
电话
Intent intent=new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:10086")); startActivity(intent);
Intent常用动作:
Intent.ACTION_ANSWER 打开接听电话的Activity,默认Android内置拨号界面 Intent.ACTION_CALL 打开拨号盘界面并拨打电话,使用Uri中的数字部分作为电话号码 Intent.ACTION_DELETE 打开一个Activity,对所提供的数据进行删除操作 Intent.ACTION_DIAL 打开内置拨号界面,显示Uri中提供的电话号码 Intent.ACTION_EDIT 打开一个Activity,对所提供的的数据进行编辑操作 Intent.ACTION_INSERT 打开一个Activity,对所提供数据的当前位置插入新项 Intent.ACTION_PICK 打开一个子Activity,从所提供的数据列表中选取一项 Intent.ACTION_SEARCH 启动一个Activity,执行搜索动作 Intent.ACTION_SENDTO 启动一个Activity,向数据提供的联系人发送信息 Intent.ACTION_SEND 启动一个可以发送数据的Activity Intent.ACTION_VIEW 最常用的动作,对Uri方式传送的数据,根据Uri协议部分以最佳方式启动相应的Activity进行处理,对于http:address将打开浏览器查看,对于tel:address将进行拨号界面并呼叫指定的电话号码。 Intent.ACTION_WEB_SEARCH 打开一个Activity,对提供的数据进行WEB搜索。
四、向下一个活动传递数据
为组件添加事件,向下一个活动传递数据。通过putExtra()方法传递数据给下一个活动,String data=mEditText.getText().toString(); Intent intent=new Intent(IntentActivity.this,SubActivity2.class); intent.putExtra("extra_string",data); startActivity(intent);
在SubActivity2中取数据,通过getIntent()方法获取传递过来的Intent,通过getStringExtra()获取到数据,除了传递String类型的,还可传递其他数据类型的数据,boolean类型的,用getBooleanExtra()接受等等。
dataText= (TextView)findViewById(R.id.get_data_from_intent); Intent intent=getIntent(); String str=intent.getStringExtra("extra_string").toString(); dataText.setText(str);
五、返回数据给上一个活动
向上一个活动返回数据需要用startActivityForResult()启动Activity ,然后接受一个返回的result。被启动的activity需要指定返回的result,把这个result作为另外一个intent对象返回,我们的activity需要在onActivityResult()的回调方法里面去接收result。在执行startActivityForResult()时,可以使用explicit 或者 implicit 的intent。当启动另外一个位于的程序中的activity时,我们应该使用explicit intent来确保可以接收到期待的结果。
Intent intent=new Intent(IntentActivity.this,SubActivity.class); startActivityForResult(intent,SUBACTIVITY1);
用s
4000
tartActivityForResult()方法来启动SubActivity,在SubActivity中用setResult()方法把数据返回给上一个Activity。
setResult()方法,专门用于向上一个活动返回数据的,该方法接收两个参数,第一个参数用于向上一个活动返回数据,RESULT_OK 和RESULE_CANCELED 第二个参数,把带有数据的Intent传递回去。
Intent intent=new Intent(); intent.putExtra("data_return","Hello IntentActivity,I am SubActivity"); setResult(RESULE_OK,intent); finish();
当用户完成了启动之后activity操作之后,系统会调用我们activity中的onActivityResult() 回调方法。该方法有三个参数:
1、通过startActivityForResult()传递的request code。
2、第二个activity指定的result code。如果操作成功则是RESULT_OK ,如果用
3、户没有操作成功,而是直接点击回退或者其他什么原因,那么则是RESULT_CANCELED
包含了所返回result数据的intent。
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode){ case SUBACTIVITY1: if (resultCode==RESULT_OK){ Uri uriData=data.getData(); mTextView.setText(uriData.toString()); } break; } }
参考内容:
一、Android官方培训课程
二、郭霖《第一行代码》
相关文章推荐
- Android 系统应用调用,intent 的使用总结
- intent方法使用总结
- Android笔记:intent方法使用总结
- Activity之间使用intent传递大量数据带来问题总结
- Android 系统应用调用,intent 的使用方法总结
- Android 系统应用调用,intent的使用总结
- Intent 使用总结
- Intent使用总结
- Android中Intent的使用总结
- Activity之间使用intent传递大量数据带来问题总结
- intent使用总结
- Intent 使用总结
- 对于TabHost中setContent()使用Intent的一点总结
- Android Intent的几种使用方法全面总结
- Activity加载模式及Intent的FLAG使用总结
- Android 系统应用调用,intent的使用总结帖
- 【android中级】Android 系统应用调用,intent的使用总结
- Intent使用总结(传递,打开Activity方式)
- Intent使用总结
- android intent使用总结