Android基础学习之Intent
2011-04-06 14:54
393 查看
Android用Intent这个特殊类实现Activity与Activity之间的切换。Intent类用于描述应用的功能。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。
Intent作用的表现形式为:
1、通过Context.startActivity() orActivity.startActivityForResult() 启动一个Activity;
2、通过 Context.startService() 启动一个服务,或者通过Context.bindService() 和后台服务交互;
3、通过广播方法(比如 Context.sendBroadcast(),Context.sendOrderedBroadcast(), Context.sendStickyBroadcast()) 发给broadcast receivers。
Intent属性的设置,包括以下几点:(以下为XML中定义,当然也可以通过Intent类的方法来获取和设置)
一、Action,也就是要执行的动作
SDk中定义了一些标准的动作,包括:
当然,也可以自定义动作。
二、Data,也就是执行动作要操作的数据
Android中采用指向数据的一个URI来表示,如在联系人应用中,一个指向某联系人的URI可能为:content://contacts/1。对于不同的动作,其URI数据的类型是不同的(可以设置type属性指定特定类型数据),如 ACTION_EDIT指定Data为文件URI,打电话为tel:URI,访问网络为http:URI,而由content provider提供的数据则为
三、type(数据类型),显式指定Intent的数据类型(MIME)。
一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。
四、category(类别),被执行动作的附加信息。
例如 LAUNCHER_CATEGORY 表示Intent 的接受者应该在Launcher中作为顶级应用出现;而ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个,这些动作可以在同一块数据上执行。还有其他的为:
五、component(组件),指定Intent的的目标组件的类名称。
通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
六、extras(附加信息),是其它所有附加信息的集合。
Intent的解析机制可参考上一篇文章:http://www.cnblogs.com/lurenjiashuo/archive/2011/03/09/1978260.html
七、Android Intent常用用法汇总
1、显示网页:
2、显示地图:
3、路径规划:
Intent作用的表现形式为:
1、通过Context.startActivity() orActivity.startActivityForResult() 启动一个Activity;
2、通过 Context.startService() 启动一个服务,或者通过Context.bindService() 和后台服务交互;
3、通过广播方法(比如 Context.sendBroadcast(),Context.sendOrderedBroadcast(), Context.sendStickyBroadcast()) 发给broadcast receivers。
Intent属性的设置,包括以下几点:(以下为XML中定义,当然也可以通过Intent类的方法来获取和设置)
一、Action,也就是要执行的动作
SDk中定义了一些标准的动作,包括:
当然,也可以自定义动作。
二、Data,也就是执行动作要操作的数据
Android中采用指向数据的一个URI来表示,如在联系人应用中,一个指向某联系人的URI可能为:content://contacts/1。对于不同的动作,其URI数据的类型是不同的(可以设置type属性指定特定类型数据),如 ACTION_EDIT指定Data为文件URI,打电话为tel:URI,访问网络为http:URI,而由content provider提供的数据则为
content:URIs。
三、type(数据类型),显式指定Intent的数据类型(MIME)。
一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。
四、category(类别),被执行动作的附加信息。
例如 LAUNCHER_CATEGORY 表示Intent 的接受者应该在Launcher中作为顶级应用出现;而ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个,这些动作可以在同一块数据上执行。还有其他的为:
五、component(组件),指定Intent的的目标组件的类名称。
通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
六、extras(附加信息),是其它所有附加信息的集合。
Intent的解析机制可参考上一篇文章:http://www.cnblogs.com/lurenjiashuo/archive/2011/03/09/1978260.html
七、Android Intent常用用法汇总
1、显示网页:
Uri uri = Uri.parse("http://www.cnblogs.com"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it);
2、显示地图:
Uri uri = Uri.parse("geo:38.899533,-77.036476"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it);
3、路径规划:
Uri uri = Uri.parse("http://maps.google.com/maps? f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it)
4、打电话: //叫出拨号程序 Uri uri = Uri.parse("tel:0800000123"); Intent it = new Intent(Intent.ACTION_DIAL, uri); startActivity(it); //直接打电话出去 Uri uri = Uri.parse("tel:0800000123"); Intent it = new Intent(Intent.ACTION_CALL, uri); startActivity(it); //用這個,要在 AndroidManifest.xml 中,加上 //<uses-permission id="android.permission.CALL_PHONE" /> 5、传送SMS/MMS: //调用短信程序 Intent it = new Intent(Intent.ACTION_VIEW, uri); it.putExtra("sms_body", "The SMS text"); it.setType("vnd.android-dir/mms-sms"); startActivity(it); //传送消息 Uri uri = Uri.parse("smsto://0800000123"); Intent it = new Intent(Intent.ACTION_SENDTO, uri); it.putExtra("sms_body", "The SMS text"); startActivity(it); //传送 MMS Uri uri = Uri.parse("content://media/external/images/media/23"); Intent it = new Intent(Intent.ACTION_SEND); it.putExtra("sms_body", "some text"); it.putExtra(Intent.EXTRA_STREAM, uri); it.setType("image/png"); startActivity(it); 6、传送 Email: //方法一 Uri uri = Uri.parse("mailto:xxx@abc.com"); Intent it = new Intent(Intent.ACTION_SENDTO, uri); startActivity(it); //方法二 Intent it = new Intent(Intent.ACTION_SEND); it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com"); it.putExtra(Intent.EXTRA_TEXT, "The email body text"); it.setType("text/plain"); startActivity(Intent.createChooser(it, "Choose Email Client")); //方法三 Intent it=new Intent(Intent.ACTION_SEND); String[] tos={"me@abc.com"}; String[] ccs={"you@abc.com"}; it.putExtra(Intent.EXTRA_EMAIL, tos); it.putExtra(Intent.EXTRA_CC, ccs); it.putExtra(Intent.EXTRA_TEXT, "The email body text"); it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); it.setType("message/rfc822"); startActivity(Intent.createChooser(it, "Choose Email Client")); //传送附件 Intent it = new Intent(Intent.ACTION_SEND); it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text"); it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3"); sendIntent.setType("audio/mp3"); startActivity(Intent.createChooser(it, "Choose Email Client")); 7、播放多媒体: //方法一 Uri uri = Uri.parse("file:///sdcard/song.mp3"); Intent it = new Intent(Intent.ACTION_VIEW, uri); it.setType("audio/mp3"); startActivity(it); //方法二 Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); 8、Market 相关: //寻找某个应用 Uri uri = Uri.parse("market://search?q=pname:pkg_name"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); //where pkg_name is the full package path for an application //显示某个应用的相关信息 Uri uri = Uri.parse("market://details?id=app_id"); Intent it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); //where app_id is the application ID, find the ID //by clicking on your application on Market home //page, and notice the ID from the address bar 9、Uninstall 应用程序: Uri uri = Uri.fromParts("package", strPackageName, null); Intent it = new Intent(Intent.ACTION_DELETE, uri); startActivity(it);
相关文章推荐
- android基础学习5————隐式意图intent开启系统照相机
- android学习中关于Textview,Button,EditText,连接的设置,Intent,Activity不同状态等的一系列基础知识点
- Android基础学习第三篇—Intent的用法
- Android基础学习之Intent常用方法
- android基础学习(10)-------pandingIntent
- android基础学习6——intent实现数据传递
- 【幻化万千戏红尘】qianfeng-Android-Day06-Intent七大属性基础学习:
- Android项目之HomeHealth基础学习3:Intent使用Component
- 【android基础学习之五】——基础控件Menu,Dialog,ImageView,ImageButton
- Android Service学习之IntentService 深入分析
- Android入门学习笔记(五):Activity与Intent
- Android基础学习总结(十三)——利用jsoup解析html实现网络爬虫
- android学习记录(五)显式Intent与隐式Intent的功能与使用方法解析。
- Android学习之 基础(一)
- Android开发学习笔记:浅谈显示Intent和隐式Intent
- ANDROID基础学习笔记_2_几种常见的布局方式
- Android学习记录之Volley网络通信框架基础解析(1)
- [原]零基础学习SDL开发之在Android使用SDL2.0渲染PNG图片
- Android基础----Intent
- Android学习日志之一:Intent知识点及其应用