- 浏览: 2196619 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
在讲action之前,我跟大家回忆一个场景。用过Android手机的人应该都知道,比如说我在某个App例如新浪微博中点击拍照,会跳转到照相机的界面。但是当我新装了camer360或之类的第三方照相app的时候在微博中点击照相就会先弹出一个Dialog来让我选择是使用默认camer还是camer360.
ok,在讲完刚刚那个场景之后我给大家介绍一下显示intent 与隐式intent。
对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”。对于没有明确指出目标组件名称的Intent,则称之为“隐式 Intent”。Android系统使用IntentFilter 来寻找与隐式Intent相关的对象。(关于IntentFilter我们马上就会讲到。)
显式Intent直接用组件的名称定义目标组件,这种方式很直接。但是由于开发人员往往并不清楚别的应用程序的组件名称,因此,显式Intent更 多用于在应用程序内部传递消息。比如在某应用程序内,一个Activity启动一个Service。隐式Intent恰恰相反,它不会用组件名称定义需要 激活的目标组件,它更广泛地用于在不同应用程序之间传递消息。
在通常的HelloWorld中使用的都是显示Intent,即需要指明跳转的activity对象,如:Intent intent = new Intent(MainActivity.this,BActivity.class);
如果要跳转到一个未知路径,但是已知功能的Activity就要用到隐式intent,如;Intent intent = new Intent(Intent.ACTION_SEND);
===========================================================================================================
好的,应该讲到这里大家或许已经知道activity的作用的,如果仍然不清楚也没关系,我们下面讲实例:
实例一:
有三个Activity:MainActivity.java/BAcitvity.java/CActivity.java
假设这是一个照相应用MainActivity是程序入口,BActivity和CActivity都可以处理照相的内容。
在我们不会使用action的时候我们要使这个应用既可以使用BActivity照相,又能使用CActivity照相如何实现?
当然是在MainActivity中写两个Button,
new Intent(MainActivity.this,BActivity.class);
new Intent(MainActivity.this,CActivity.class);
通过两种不同的Intent来发起请求。
那么如何使用action来实现呢?
在xml中先这样定义:
我们在MainActivity中实现一个Button,点击发送:
new Intent("com.h3c.intent.ACTION_VIEW");
此时就会弹出一个Dialog让我们自动选择是使用BActivity还是使用CActiviy了,就如前文我提到camer360的那个例子
这也就是隐式intent,即发送一种类型的action,可以让所有支持该类型的activity都收到消息,然后由用户选择使用哪个activity处理。
实例二:(Android分享与接收分享)
自己之前其实也接触过action,但是没有自己的去想清楚。如何实现呢?
首先看看如何分享给别人:
就是用上文提到的隐式intent,因为我并不知道有那些应用可以支持分享,所以我用隐式intent发起分享这一类的请求。
我们再看如何支持分享:
是的,使用action告诉别人我支持SEND这类隐式intent,注意必须也有这样一句话,否则运行会报错。
最后通过data约束一下格式。
大家应该跟我一样终于明白action的用法了吧!
ok,在讲完刚刚那个场景之后我给大家介绍一下显示intent 与隐式intent。
对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”。对于没有明确指出目标组件名称的Intent,则称之为“隐式 Intent”。Android系统使用IntentFilter 来寻找与隐式Intent相关的对象。(关于IntentFilter我们马上就会讲到。)
显式Intent直接用组件的名称定义目标组件,这种方式很直接。但是由于开发人员往往并不清楚别的应用程序的组件名称,因此,显式Intent更 多用于在应用程序内部传递消息。比如在某应用程序内,一个Activity启动一个Service。隐式Intent恰恰相反,它不会用组件名称定义需要 激活的目标组件,它更广泛地用于在不同应用程序之间传递消息。
在通常的HelloWorld中使用的都是显示Intent,即需要指明跳转的activity对象,如:Intent intent = new Intent(MainActivity.this,BActivity.class);
如果要跳转到一个未知路径,但是已知功能的Activity就要用到隐式intent,如;Intent intent = new Intent(Intent.ACTION_SEND);
===========================================================================================================
好的,应该讲到这里大家或许已经知道activity的作用的,如果仍然不清楚也没关系,我们下面讲实例:
实例一:
有三个Activity:MainActivity.java/BAcitvity.java/CActivity.java
假设这是一个照相应用MainActivity是程序入口,BActivity和CActivity都可以处理照相的内容。
在我们不会使用action的时候我们要使这个应用既可以使用BActivity照相,又能使用CActivity照相如何实现?
当然是在MainActivity中写两个Button,
new Intent(MainActivity.this,BActivity.class);
new Intent(MainActivity.this,CActivity.class);
通过两种不同的Intent来发起请求。
那么如何使用action来实现呢?
在xml中先这样定义:
<activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".BActivity" android:label="@string/title_activity_main" android:launchMode="singleTask" > <intent-filter> <action android:name="com.h3c.intent.ACTION_VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> </intent-filter> </activity> <activity android:name=".CActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="com.h3c.intent.ACTION_VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> </intent-filter> </activity>
我们在MainActivity中实现一个Button,点击发送:
new Intent("com.h3c.intent.ACTION_VIEW");
此时就会弹出一个Dialog让我们自动选择是使用BActivity还是使用CActiviy了,就如前文我提到camer360的那个例子
这也就是隐式intent,即发送一种类型的action,可以让所有支持该类型的activity都收到消息,然后由用户选择使用哪个activity处理。
实例二:(Android分享与接收分享)
自己之前其实也接触过action,但是没有自己的去想清楚。如何实现呢?
首先看看如何分享给别人:
public static void shareText(Context context, String title, String text) { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_SUBJECT, title); intent.putExtra(Intent.EXTRA_TEXT, text); context.startActivity(Intent.createChooser(intent, title)); }
就是用上文提到的隐式intent,因为我并不知道有那些应用可以支持分享,所以我用隐式intent发起分享这一类的请求。
我们再看如何支持分享:
<activity android:name=".SharePage" android:label="分享到微博"> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter> </activity>
是的,使用action告诉别人我支持SEND这类隐式intent,注意必须也有这样一句话,否则运行会报错。
<category android:name="android.intent.category.DEFAULT" />
最后通过data约束一下格式。
大家应该跟我一样终于明白action的用法了吧!
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 626本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1100颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 993从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1166Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1004Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 839前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 929监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 800在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 949最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1327##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1113当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 778setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1506问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 766底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1782点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1370import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2313TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1549一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 865Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 932最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
3. 注册IntentFilter:为IntentFilter添加对应的ACTION,如"android.intent.action.TIME_TICK"、"android.intent.action.SCREEN_ON"和"android.intent.action.BATTERY_CHANGED"。 4. 不再需要时,记得在合适的位置...
接下来,我们将深入探讨如何在Android中使用Intent ACTION_CALL来实现拨打电话的功能。 首先,理解Intent ACTION_CALL的含义是关键。ACTION_CALL是一个特殊的Intent动作,当设置为Intent的动作时,系统会尝试拨打...
Android 广播大全 Intent Action 事件 Android 广播大全 Intent Action 事件是 Android 系统中的一种核心机制,用于在应用程序之间传递信息和事件通知。 Intent 是一种轻量级的消息对象,用于描述一个操作的请求或...
在Android开发中,Intent是一种非常重要的组件,它用于在应用程序的不同组件之间传递消息,实现活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)以及内容提供者(Content Provider)之间的交互...
android intent和intent action大全
在上面的代码中,我们首先创建了一个 Intent 对象,并指定了动作为 "android.intent.action.VIEW",然后使用 setDataAndType 方法设置了 URI 和类型为 "application/pdf",最后使用 startActivity 方法启动该 Intent...
Android系统会根据Intent的Action、Data、Category等属性来寻找最适合处理Intent的Activity。例如,拨打电话可以这样启动: ```java Intent call = new Intent(Intent.ACTION_CALL); call.setData(Uri.parse("tel:...
在这个源码中,我们可能会看到如何使用`Intent intent = new Intent()`来创建一个Intent实例,然后用`intent.setComponent()`或`intent.setClass()`来指定目标组件。此外,使用`putExtra()`可以添加额外的数据,而`...
如果需要在设备上打开网页,可以创建一个带有`ACTION_VIEW`的Intent,并传入网页的`Uri`。这将启动设备上的浏览器应用来显示网页。 ```java Uri uri = Uri.parse("http://www.google.com"); Intent it = new ...
<action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"/> </intent-filter> ``` 这段代码表示该组件可以处理...
### Android Intent Action 大全 #### 一、概述 在Android开发中,`Intent`作为组件间通信的重要机制之一,其通过携带特定的信息在不同组件之间进行传递,从而实现组件间的交互与通信。`Intent`有两种类型:显式...
本篇文章将深入探讨Intent的基本概念、类型、构造方法以及如何在Android中有效地使用Intent。 Intent是一种意图声明,表达了应用程序想要执行的操作。在Android系统中,Intent分为显式Intent和隐式Intent两种类型。...
### Android Intent 实例详解 #### 一、引言 在Android开发中,`Intent`...理解并熟练掌握`Intent`的使用方法对于每个Android开发者来说都是至关重要的。希望本文能够帮助您更好地利用`Intent`来增强您的应用程序。
Android Intent 使用总结 Android Intent 是 Android 组件之间通讯的核心机制,它负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述。Android 则根据 Intent 的描述,找到对应的组件,将 Intent 传递给...
标题与描述中的关键词“android用于打开各种文件的intent”揭示了本文将探讨的主题:在Android平台上,如何使用Intent机制来启动应用程序以打开不同类型的文件。Intent是Android四大组件之一,它提供了一种方式来...
### Android中Intent的Uri使用详解 #### 概述 在Android开发中,`Intent`是进行组件间通信的重要工具之一,它可以启动一个Activity、BroadcastReceiver或Service,也可以用来向服务发送数据请求。其中,`Intent`的...
总结,Intent是Android系统中连接各个组件的桥梁,理解并熟练使用Intent对于开发Android应用至关重要。在实际项目中,Intent不仅可以用于启动Activity和Service,还可以用于启动BroadcastReceiver,实现各种组件间的...
本资料主要聚焦于Android Intent中的Action概念,详细解析了Android Intent Action大全。 Intent通常包含两个关键部分:Action和Data。Action定义了Intent想要执行的操作类型,如启动一个新的活动(Activity)、...