• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 4.5.1 Intent的基本使用

4.5.1 Intent的基本使用

作者:coder-pig 字体:[增加 减小] 来源:互联网 时间:2017-05-22

coder-pig通过本文主要向大家介绍了微信4.5.1官方下载,net framework 4.5.1,微信4.5.1,微信版本4.5.1,.net 4.5.1等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本节引言:

在上一节结束后意味着Android的四大组件我们都已经学习完毕了~,而本节我们要学习的是四大组件间的 枢纽——Intent(意图),Android通信的桥梁,比如我们可以通过:

  • startActivity(Intent)/startActivityForResult(Intent):来启动一个Activity
  • startService(Intent)/bindService(Intent):来启动一个Service
  • sendBroadcast:发送广播到指定BroadcastReceiver
  • 另外别忘了我们在注册四大组件时,写得很多的Intent-Filter哦~

好吧,话不多说,开始本节内容!另外前面我们已经用过Intent了,就不在讲述概念性的东西了~ 老规矩,官方API:Intent


1.显式Intent与隐式Intent的区别

  • 显式Intent:通过组件名指定启动的目标组件,比如startActivity(new Intent(A.this,B.class)); 每次启动的组件只有一个~
  • 隐式Intent:不指定组件名,而指定Intent的Action,Data,或Category,当我们启动组件时, 会去匹配AndroidManifest.xml相关组件的Intent-filter,逐一匹配出满足属性的组件,当不止一个满足时, 会弹出一个让我们选择启动哪个的对话框~

2.Intent的七个属性:


1)ComponentName(组件名称)


2)Action(动作)


3)Category(类别)


4)Data(数据),Type(MIME类型)

此处输入图片的描述


5)Extras(额外)


6)Flags(标记)


3.显式Intent使用示例:

这个用得很多,直接就上例子了:

例子1:点击按钮返回Home界面: 运行效果图:

核心代码:

Intent it = new Intent();
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_HOME);
startActivity(it);

例子2:点击按钮打开百度页面: 运行效果图:

核心代码:

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

4.隐式Intent详解


1)预定义动作的隐式Intent示例:

代码示例:点击按钮后,所有Action为VIEW的Activity被筛选出来,由用户进一步选择:

核心代码:

建立第二个Activity的布局,与对应的Activity,在第一个Activity的按钮点击事件中添加一下代码:

Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
startActivity(it);

最后在第二个Activity的Intent中添加以下代码:

<activity android:name=".SecondActivity"
            android:label="第二个Activity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>           
 </activity>
 

运行效果图:


2)自定义动作的隐式Intent示例:

代码示例:使用自定义的Action与category来激活另一个Activity

核心代码: 建立第二个Activity的布局,与对应的Activity,在第一个Activity的按钮点击事件中添加一下代码:

Intent it = new Intent();
it.setAction("my_action");
it.addCategory("my_category");
startActivity(it);	

最后在第二个Activity的Intent中添加以下代码:

<activity android:name=".SecondActivity"
        android:label="第二个Activity">
    <intent-filter>
        <action android:name="my_action"/>
        <category android:name="my_category"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>           
</activity>

注意虽然我们自定义了一个category,但是还是要把这个默认的加上,不然会报错的:

<category android:name="android.intent.category.DEFAULT"/>

5.常用系统Intent合集

大家贴下常用的系统Intent的合集吧,上面没有的欢迎提出~

//===============================================================
//1.拨打电话
// 给移动客服10086拨打电话
Uri uri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent);

//===============================================================

//2.发送短信
// 给10086发送内容为“Hello”的短信
Uri uri = Uri.parse("smsto:10086");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "Hello");
startActivity(intent);

//3.发送彩信(相当于发送带附件的短信)
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("sms_body", "Hello");
Uri uri = Uri.parse("content://media/external/images/media/23");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType("image/png");
startActivity(intent);

//===============================================================

//4.打开浏览器:
// 打开百度主页
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent  = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

//===============================================================

//5.发送电子邮件:(阉割了Google服务的没戏!!!!)
// 给someone@domain.com发邮件
Uri uri = Uri.parse("mailto:someone@domain.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(intent);
// 给someone@domain.com发邮件发送内容为“Hello”的邮件
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, "someone@domain.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "Hello");
intent.setType("text/plain");
startActivity(intent);
// 给多人发邮件
Intent intent=new Intent(Intent.ACTION_SEND);
String[] tos = {"1@abc.com", "2@abc.com"}; // 收件人
String[] ccs = {"3@abc.com", "4@abc.com"}; // 抄送
String[] bccs = {"5@abc.com", "6@abc.com"}; // 密送
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_BCC, bccs);
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "Hello");
intent.setType("message/rfc822");
startActivity(intent);

//===============================================================

//6.显示地图:
// 打开Google地图中国北京位置(北纬39.9,东经116.3)
Uri uri = Uri.parse("geo:39.9,116.3");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

//===============================================================

//7.路径规划
// 路径规划:从北京某地(北纬39.9,东经116.3)到上海某地(北纬31.2,东经121.4)
Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=39.9 116.3&daddr=31.2 121.4");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

//===============================================================

//8.多媒体播放:
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/foo.mp3");
intent.setDataAndType(uri, "audio/mp3");
startActivity(intent);

//获取SD卡下所有音频文件,然后播放第一首=-= 
Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent intent = new Intent(



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 4.5.1 Intent的基本使用

相关文章

  • 2017-05-26cordova开发自定义插件
  • 2017-05-26Android开发:JSON简介&amp;Gson、AS自带org.son、Jackson解析详解
  • 2017-05-26保持listview当前位置,listview当前位置
  • 2017-05-26GitLab误删 300G数据的一点启示
  • 2017-05-26安卓高级组件-----网格视图,安卓-----网格
  • 2017-05-26android 动画效果,android动画
  • 2017-05-26自定义控件详解(二):Path类 相关用法,详解path
  • 2017-05-26[android] 手机卫士手机定位的原理,android卫士
  • 2017-05-26ArcGIS Android工程迁移到其他电脑不能打开的问题,arcgisandroid
  • 2017-05-26Android中手机录屏并转换GIF的两种方式,android录屏

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android面试题(1),android面试题
    • HBase Thrift2 CPU过高问题分析
    • Android Drawable的9种子类 介绍
    • Android开发找工作之前先看看这些知识点吧
    • Android 查看自己的keystore的别名及相关信息,androidkeystore
    • onSaveInstanceState和onRestoreInstanceState触发的时机,onsaveinstancestate
    • Atitit.android js 的键盘按键检测Back键Home键和Menu键事件,atitit.androidmenu
    • android 自定义View圆圈箭头_
    • 手游项目总结,游项目总结
    • 自定义的dialog中的EditText无法弹出输入法解决方案,dialogedittext

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有