【android基础】Intent
来源:互联网 发布:上海网络推广培训学校 编辑:程序博客网 时间:2024/06/04 01:12
intent [意图]
理解为一个画面跳转的桥梁
显式启动 的intent
//要从Activity1跳转画面到Activity2,需要新建一个Intent,并启动Intent intent = new Intent( Activity1.this , Activity2.class);StartActivity(intent);第一句的第一个参数是 应用程序的上下文context,所以可以用this来代替.
第二个参数是目标组将,显式意图是直接指名要跳转的组将,class.
补充:每次新建一个Activity的时候记得在Mainfest的<application>的节点下加一句
<activity android:name=" 新加入的Activity的名字 " />
隐式启动 的intent
Intent intent =new Intent(Intent.ACTION_VIEW, Uri.Parse("http://www.baidu.com"));StartActivity(intent);所谓隐式,就是由系统自己决定怎么启动,不用刻意去想.
比如上面,要打开一个网址,系统就会决定用什么浏览器去打开,不用设置(默认是系统自带的浏览器)
第一句的第一个参数是Intent的动作.
常用的有以下:
ACTION_ANSWER 接听电话
ACTION_CALL 拨号,uri数字部分作为号码
Action_CALL_BUTTON 通话记录
ACTION_DIAL 打开拨号界面,显示uri数字部分作为电话
ACTION_VIEW 最常用,根据uri打开相应的
ACTION_MAIN 标识Activity为一个程序的开始
Action.ALL_APPS 列出所有的应用
ACTION_SENDTO 发送短息
其他用到我再加上来...少用到就不一一说
第二个参数是Uri对象.其中使用 uri.parse("String")可以将字符串转化为uri对象(parse翻译:[描述]
Sub-Acitivity(返回值) 方式启动
这个意思就是父Activity 启动了 子Activity ,并且要求其返回值回到父Acitivity.不像前面两个例子那样相互独立.
其实方法很简单只需要改了下面那句~
显式:
//要从Activity1跳转画面到Activity2,需要新建一个Intent,并启动
Intent intent = new Intent( Activity1.this , Activity2.class);
StartActivityForResult(intent,1);
隐式
Intent intent =new Intent(Intent.ACTION_VIEW, Uri.Parse("http://www.baidu.com"));
StartActivityForResult(intent,2);
不同的是最后一句话而已,而他的第二个参数是requestCode ,填数字的,是识别码.一个父Activity可以有几个子Activity,所以就需要有识别码了.
而在子Activity中在finish()前调用 setResult(RESULT_OK,intent) 来返回值~返回的类型是intent,其实要的是intent(none,uri)中的uri信息.
当子Actiity关闭时,会自动调用启动他的父的 onActivityResult (intrequestCode, int resultCode , intent data).
第一个参数是 识别码 ,获取对应的识别码的返回数据/
第二个参数是返回状态~~就是setResult的第一个参数.有RESULT_OK 和 RESULT_CANCELED
第三个参数是返回的主要数据,就是setResult的第二个参数
下面举个例子:
父Activity:
private static final int SUBACTIVITY1=1; Intent intent =new intent(this,SubActivity.class); startActivityForResult(intent,SUBACTIVITY1); @Override public void onActivityResult(int requestCode , int resultCode , intent data){ //当子Activity关闭后自动调用 Super.onActivityResult(requestCode , resultCode , data); switch(requestCode){ case SUBACTIVITY1: if(resultCode ==Activity.RESULT_OK){ Uri.uriData=data.getData(); }else if (resultCode == Activity.RESULT_CANCEL) {} break; } }
子Activity:
Uri data=Uri.parse("tel:"+tel_number); //设置Uri对象Intent result=new Intent(null,date); //放进intentresult.putExtra("address","JD Street"); //补充额外数据setResult(RESULT_OK,result); //返回值给父finish();
Intent Filter[意图过滤器]
是用来识别intent 的隐式启动.写在manifest文件里面的<Activity>节点下.
他有三个标签 <action>动作 <category>类别 <data>数据
BroadcastReceiver [广播消息 ]
发送广播
Intent intent =new Intent( "com. example.test"); //string是一个标识符,通常用包名intent.putExtra("key1","vaule1"); //放入一个数据与其标志intent.putExtra("key2","value2"); sendBroadcast(intent); //发送广播
在manifest中注册receiver
<receiver android:name=".myreceiver"> <intent-filter> <action android:name="com.example.test" /> </intent-filter></receiver>action的名字是与标识符对应的~~
接收广播:
public class myreceiver extends BroadcastReceiver{ @Override public void onReceive(Context context , Intent intent){ String msg =intent.getStringExtra("key1"); }}
这样就接收到了.接收广播不需要程序一直运行的,而且某个view注册的广播是整个程序通用的.
- Android基础-intent详解
- Android-Intent基础
- Android基础-1(intent)
- 【android基础】Intent
- [Android基础]Intent
- Intent android基础二
- Android基础-----Activity,Intent
- Android基础之Intent
- Android基础-Intent用法
- 【Android基础】趣谈Intent
- Android基础----Intent
- Android基础-Intent flag
- 基础-3 ANDROID Intent
- Android-基础-intent
- android基础(Intent)
- Android基础之Intent和Intent Filter
- Android基础之Intent 和 Intent 过滤器
- Android基础学习之Intent
- Cocos2d-x---Touch事件
- 网络编程socket基本API详解
- JSP中的TAG文件和TLD文件小结
- c语言练习 11-0. 平面向量加法
- 关于C++pair类型(转)
- 【android基础】Intent
- 新博客重新出发
- linux C复习:#pragma的典型应用
- c语言练习 11-1. 通讯录的录入与显示(10)
- 我理解的objective-C内存管理
- 完美的“白马王子”好丈夫?
- springbatch操作XML文件
- 设计模式之桥接模式
- Starting Another Activity