- 浏览: 2197918 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
<div class="quote_title ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
在一个Android应用中,主要由四种组件组成(四种组件分别为:Activity、Broadcast、Service、ContentProvider),而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。在这些组件之间的通讯中,主要是由Intent协助完成的。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为ListActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为DetailActivity)为了实现这个目的,ListActivity需要构造一个Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity(Intent intent),将构造的Intent传入,系统会根据此Intent中的描述,到AndroidManifest.xml中找到满足此Intent要求的Activity,系统会调用找到的Activity,即为DetailActivity,最终传入Intent,DetailActivity则会根据此Intent中的描述,执行相应的操作。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为ListActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为DetailActivity)为了实现这个目的,ListActivity需要构造一个Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity(Intent intent),将构造的Intent传入,系统会根据此Intent中的描述,到AndroidManifest.xml中找到满足此Intent要求的Activity,系统会调用找到的Activity,即为DetailActivity,最终传入Intent,DetailActivity则会根据此Intent中的描述,执行相应的操作。
引用
显示网页
Uri uri = Uri.parse("http://www.google.com.hk/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
显示地图
Uri uri = Uri.parse("geo:38.899533,-77.036476");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//其他geo URI范例(latitude: 纬度,longitude: 经度)
//geo:latitude,longitude
//geo:latitude,longitude?z=zoom
//geo:0,0?q=my+street+address
//geo:0,0?q=business+near+city
//google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom
路径规划
Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456
打电话
//叫出拨号程序
Uri uri = Uri.parse("tel:0800000123");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent);
//直接打电话出去
Uri uri = Uri.parse("tel:0800000123");
Intent intent = new Intent(Intent.ACTION_CALL, uri);
startActivity(intent);
//用這個,要在 AndroidManifest.xml 中,加上<uses-permission id="android.permission.CALL_PHONE" />
传送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);
传送 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"));
播放多媒体
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);
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
Uninstall 应用程序
Uri uri = Uri.fromParts("package", strPackageName, null);
Intent it = new Intent(Intent.ACTION_DELETE, uri);
startActivity(it);
Uri uri = Uri.parse("http://www.google.com.hk/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
显示地图
Uri uri = Uri.parse("geo:38.899533,-77.036476");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//其他geo URI范例(latitude: 纬度,longitude: 经度)
//geo:latitude,longitude
//geo:latitude,longitude?z=zoom
//geo:0,0?q=my+street+address
//geo:0,0?q=business+near+city
//google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom
路径规划
Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
//where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456
打电话
//叫出拨号程序
Uri uri = Uri.parse("tel:0800000123");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent);
//直接打电话出去
Uri uri = Uri.parse("tel:0800000123");
Intent intent = new Intent(Intent.ACTION_CALL, uri);
startActivity(intent);
//用這個,要在 AndroidManifest.xml 中,加上<uses-permission id="android.permission.CALL_PHONE" />
传送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);
传送 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"));
播放多媒体
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);
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
Uninstall 应用程序
Uri uri = Uri.fromParts("package", strPackageName, null);
Intent it = new Intent(Intent.ACTION_DELETE, uri);
startActivity(it);
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 627本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1104颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 996从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1170Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1006Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 840前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 930监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 801在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 955最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1329##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1119当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 781setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1507问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 768底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1782点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1372import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2320TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1554一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 867Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 933最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
这个压缩包包含了Intent_ComponentSample项目的所有源代码,让我们深入探究Android应用中Intent与组件交互的核心概念。 Intent在Android系统中扮演着至关重要的角色,它是组件间通信的主要机制。Intent可以用来启动...
老罗的PPT将带你深入探究Android的架构,包括用户界面、系统服务、库和运行时环境、硬件抽象层等组成部分。 在PPT中,你可能会学习到: 1. **Android系统架构**:了解Android的分层结构,包括应用程序层、应用程序...
在"Android开发之进程间通信AIDL的探究和学习"的个人博客中,你将找到一个完整的计算器示例,它展示了如何使用AIDL进行加法和减法运算。通过这个示例,你可以更好地理解服务端如何处理请求,以及客户端如何接收结果...
Activity的生命周期是其核心特性之一,包括onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()等关键方法。这些方法在Activity的不同状态变化时被调用,为开发者提供了管理资源和状态的机会。...
系统源码是理解Android运行机制的关键,通过分析源码,开发者可以深入探究其内部工作原理,提升开发效率并优化应用性能。 一、Android系统框架 Android系统主要由五层结构组成:Linux内核、硬件抽象层(HAL)、...
当位置更新时,将新的位置数据封装进Intent对象,通过sendBroadcast()等相关方法发送,已注册的BroadcastReceiver会根据IntentFilter进行匹配并执行相应的onReceive()方法。 3. **Android编程环境**:项目基于...
在Android应用开发中,Activity是构成应用程序的基本组件之一,它代表了用户可见并可以与之交互的屏幕。本文将深入探讨“android两个activity的例子”,基于提供的压缩包文件Android_TwoActivity,我们将详细介绍...
《基于Android的手机通讯录开发的探究与实现》 随着科技的不断进步,移动设备已经成为我们日常生活中不可或缺的一部分。尤其是Android操作系统,自2007年发布以来,以其开源、灵活的特性吸引了大量的开发者,为移动...
源码中可以探究Intent的创建、解析和传递过程。 4. **权限管理**:Android系统通过权限管理系统控制应用的访问权限。源码分析能了解权限请求、验证和动态权限管理的实现。 5. **多线程与异步处理**:源码中包含...
它允许开发者通过声明方式使用Android服务,例如使用Intent在Activity之间传递消息,使用Content Provider访问和共享数据等。Android的无边界设计意图是指框架层提供灵活且高度解耦的服务和组件,使开发者可以构建...
源代码中,你可以看到这些应用程序是如何与Android系统其他部分进行通信的,例如通过Intent对象来启动服务或活动。通过学习这部分源码,开发者可以更好地设计和实现自己的应用程序,提高用户体验。 2. 应用程序框架...
3. **Activity与Intent**:Activity是Android应用的基本组件,用于展示用户界面。Intent用于在不同组件之间传递数据和启动服务。源码中会展示如何正确启动和管理Activity,以及使用Intent实现应用间的通信。 4. **...
- 案例法与探究法用于Activity生命周期等难点内容的教学。 5. **知识单元五:界面控件及组织** - **教学要求**:掌握View、ViewGroup及Layout等视图API的继承体系及各种典型文本、动作控件的使用方法,学会利用...
AndroidAppCodeFramework-master源码库提供了一个深入理解Android应用开发的宝贵资源,让我们一起探究其中蕴含的丰富知识。 一、Android 应用框架概述 Android App Code Framework是Android应用程序的核心框架,它...
6. **Android框架应用**:项目可能使用了Android的生命周期管理、Intent机制、BroadcastReceiver等核心组件,学习源码可以帮助理解Android应用的架构和设计原则。 7. **测试与调试**:源码中可能包含了测试用例或...
这个“android记事本源码”提供了实现这一功能的基础框架,让我们一起深入探究其中的关键知识点。 1. **Activity与Intent** - Activity是Android应用程序的基本组件,代表用户界面。在记事本应用中,`MainActivity...
《Android 4.0 Launcher深度解析》 ...理解这些知识点是深入探究Android系统和开发自定义Launcher的基础。通过对Launcher的解析,开发者不仅可以提升Android开发技能,还能为用户提供更加个性化和高效的桌面体验。
通过《Android开发精要》这本书,开发者不仅可以掌握Android开发的基本技能,还能深入探究Android系统的工作原理,提升自己的技术水平,为创建高质量的应用奠定坚实基础。书中的扫描版PDF文件将为读者提供方便的电子...
通过《Android应用框架原理与程序设计》这本书,读者不仅可以学习到Android开发的基础知识,还能深入探究Android系统的工作原理,从而提升应用的性能和用户体验。无论你是初学者还是经验丰富的开发者,这本书都将是...