因为每一个Acticity的任务不一样,所以经常互在各个Activity之间进行跳转,在Android中这个动作是靠Intent来完成的。...Intent的定义: Intent是Android系统用来抽象描述要执行的一个操作,也可以在不同组件之间进行沟通和消息传递。...从Android5.0(API 21),系统会抛出异常当你用隐式的Intent去调用bindService()方法。...创建一个Intent: Android系统通过Intent对象携带的信息来确定启动哪个系统组件,比如:准确的组件名称,哪一个类别的组件会接收到这个intent,Intent还会携带其他的信息以便于组件正确的执行...想要了解更多的action可以查看Intent源码或者api,在Intent中定义了很多action,除了在Android framework中,在别处也定义了很多action,比如在Settings应用中
(Intent.ACTION_CALL,uri); startActivity(it); 要使用这个必须在配置文件中加入android.permission.CALL_PHONE...it.setType("vnd.android-dir/mms-sms"); startActivity(it); 2)直接发送短信 Uri uri = Uri.parse("smsto:...it = new Intent(Intent.ACTION_SENDTO, uri); startActivity(it); Intent it = new Intent(Intent.ACTION_SEND...it = new Intent(Intent.ACTION_VIEW, uri); startActivity(it); 7.分享功能 Intent intent = new Intent(...id=" + getPackageName()); intent = new Intent(Intent.ACTION_VIEW, uri); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
downloadIntent); 隐示Intent 不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理。...Intent 过滤器中控制应用在列表中的位置 2.安全问题 滥用Activity返回值 如果受害应用使用startActivityForResult(),攻击应用使用setResult()将数据传输到受害者应用的...onActivityResult()中,基于onActivityResulty()中具体的实现产生具体攻击。...用于获取用户选择的文件(文档、图象、视频)的URI,并在应用中进行处理(例如,将文件发送到服务器中),大多Android/Java无法将Android ContentResolver返回的InputSteam...数据发送到服务器中。
Intent类的系统动作常量名 系统动作的常量值 说明 ACTION_MAIN android.intent.action.MAIN App启动时的入口 ACTION_VIEW android.intent.action.VIEW...显示数据给用户 ACTION_EDIT android.intent.action.EDIT 显示可编辑的数据 ACTION_CALL android.intent.actionCALL 拨号 ACTION_DIAL...android.intent.action.DIAL 打电话 ACTION_SEND android.intent.action.SEND 发短信 ACTION_ANSWER android.intent.action.ANSWER...剩下符合条件的优先顺序调用,其中创建一个Android工程,AndroidManifest.xml里的intent-filter就是XML中的过滤器。...其中,android.intent.action.MAIN表示App的入口动作,android.intent.category.LAUNCHER表示在App启动时调用。
创建intent * 3....intent = new Intent(MainActivity.this,Main2Activity.class); //创建信使进行跳转页面 intent.putExtra...("text",s); //将获取输入文本的内容放到putExtra中 startActivity(intent); //开启新页面 }...获取intent传值 getintent * 2....赋值 */ Intent intent = getIntent(); //获取信使 String text = intent.getStringExtra
问题 我们期望这种类型的交互流程如下图所示: 流程图展示了一个启动回调 activity 的 Intent 如何作为一个扩展数据添加到一个启动 Service 的 Intent 中,然后使用此 Intent...组件的 Intent 中。...考虑一下这种场景: 如果调用方应用提供的 Intent 并不是启动调用方应用内的 Activity (比如 ClientCallbackActivity),而是去启动 Provider 应用中的私有 Activity...流程图展示了,如何通过精心构建出的 Intent 来启动 Provider 应用中的 ApiSensitiveActivity,即使它没有被标记为 exported,并且也不应该被其他应用启动。...流程图展示了如何从创建 PendingIntent 的 context 中对其进行处理,以防止攻击者调用 Provider 应用中未被标记为 exported 的 Activity。
当我们用一个显式 Intent 去启动组件时,Android 会根据 Intent 对象所提供的 component name 直接找到要启动的组件,当我们用一个隐式的 Intent 去启动组件时,Android...Intent intent = new Intent("com.luyai.action.TEST");startActivity(intent); Intent Filter 如果 Intent 中的存在...Intent 中的 category 数量可能少于 Activity 中配置的 category 数量,但是 Intent 中的这 category 必须和 Activity 中配置的 category...URL Scheme Android 中的 Scheme 是一种页面内跳转协议,是一种非常好的实现机制。通过定义自己的 Scheme 协议,可以非常方便跳转 App 中的各个页面。..." /> android:name="android.intent.action.VIEW" /> intent-filter> 原生调用:
android.intent.category.DEFAULT"),在你的Intent中设定该值为Intent的 Action就直接能跳转到你自己的Intent接收者中,因为这个Action在系统中是唯一的...,一般不要去在Intent中设置它,如果你写Intent的接收者就在Manifest.xml的Activity的 IntentFilter中包含android.category.DEFAULT,这样所有不设置...几种Intent的用法 android 中intent是经常要用到的。...String "android.intent.action.DELETE" 动作:从容器中删除给定的数据。...String "android.intent.action.INSERT" 动作:在容器中插入一个空项 (item)。
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将...下面以Action为例: AndroidManifest.xml文件中,首先被调用的Activity要有一个带有并且包含的Activity,设定它能处理的Intent,并且category设为"android.intent.category.DEFAULT...intent-filter> android:name="mark"/> android:name="android.intent.category.DEFAULT...任何数量的Category 描述都可以添加到Intent中,但是很多intent不需要category,下面列举一些常用的category: 类型 作用 CATEGORY_DEFAULT 把一个组件Component...中。
/>中之元素android:scheme、android:host、android:port、android:path 完全满足。...Activity C、D,如果这时在Activity D中再启动Activity B,将直接把Activity栈中的Activity B带到前台。...例如,Activity栈中包含A、B、C、D四个Activity,如果采用该Flag从Activity D跳转到Activity B,那么此时Activity栈中只包含A、B两个Activity。...栈中只有 A、B、C、E 四个 Activity,Activity D 不会保留在 Actvity 栈中。...七、启动Android系统常用内置组件 在实际开发中,很多时候不只是调用自定义的Activity,还会调用Android系统定义的Activity。
前言 小伙伴们,在前面的一系列文章中我们分别介绍了Android视图控件、Android布局、Android四大组件,本文我们单独介绍一下Android中一个非常重要的内容Intent的使用。...一 Intent基本介绍 Intent是Android中的一个基本组件,用于在应用内的不同组件(如活动、服务和广播接收器)之间进行通信和交互。...二 Intent使用方法 Intent是Android中用于应用组件之间通信和交互的重要机制。...通过putExtra()方法将数据放入Intent中,然后在目标活动中通过getXXXExtra()方法获取数据。...(intent); 三 Intent常见属性及方法 Intent是Android中用于组件间通信和交互的核心类。
android.intent.action.AIRPLANE_MODE android.intent.action.BATTERY_CHANGED android.intent.action.BATTERY_LOW...android.intent.action.MEDIA_EJECT android.intent.action.MEDIA_MOUNTED android.intent.action.MEDIA_NOFS...android.intent.action.PHONE_STATE android.intent.action.PROVIDER_CHANGED android.intent.action.REBOOT...android.intent.action.SCREEN_OFF android.intent.action.SCREEN_ON android.intent.action.TIMEZONE_CHANGED...android.intent.action.TIME_SET android.intent.action.TIME_TICK android.intent.action.UID_REMOVED android.intent.action.UMS_CONNECTED
服务端Intent运行过程: Sticky:这个类型的BroadCast表示某些Intent须要被保留,当新的应用起来后,须要关注这个消息,可是呢,又不须要启动这个应用来接收此消息,比方耳机插入等消息。...这个函数的主要作用就是依据这个Intent的特点,构造BroadCastRecord添�到不同的列表,等待被处理; 这样发送就到了以下这个函数中了: 控制到了scheduleBroadcastsLocked...消息放入到消息队列里面,最后传递给mHandler,从这个角度来说Intent最后也是通过线程本身的消息队列来实现Intent的分发的; 消息分发过程: mHandler收到BROADCAST_INTENT_MSG...的时候也会碰到,我们留到后面讨论,这里仅仅须要知道它通过一个while循环把Intent发送给关注这个Intent的全部的receivers; 3, 再推断 mPendingBroadcast是否为空...,假设不为空,就表示先前发送的串行的Intent还没有处理完成,一般出现这样的可能是由于我们要发送到的 receiver还没有启动,所以须要先启动这个activity,然后等待起来的这个activity
Category(类别)检测 类别在中是通过标记定义的,Category和Action一样,他们的名字都是一个字符串定义,但是我们在代码中可以使用对应的类别常量,在xml文件定义中只能使用定义好的字符串...Android的Intent类中提供了很多内置的类别定义,一中类别代表一个意思,可以参考说明使用。。...比如android.intent.category.LAUNCHER标表示你的应用会展示在启动列表页面,经常和android.intent.action.MAIN搭配使用 下面通过一个例子来说明Category...android:name="android.intent.category.DEFAULT"> android:name="com.flysnow.intent.CATEGORY_MAN...但是intent-filter的可以有额外的Category .再次提醒: Android对所有传递给 Context.startActivity()的隐式intent至少包含”android.intent.category.DEFAULT
Android 打开设置界面或者WiFi连接界面注:有些Settings的字符需要高版本才适用Intent it = new Intent(Settings.ACTION_WIFI_SETTINGS);..., "返回");it.putExtra("extra_prefs_set_back_text", "确认");startActivityForResult(it, 202); //直接进入手机中的...wifi网络设置界面,返回时可以触发回调如何直接打开android系统的wifi设置页面,防止intent劫持Intent it = new Intent();ComponentName cn = new...ComponentName("com.android.settings","com.android.settings.wifi.WifiSettings");it.setComponent(cn);it.putExtra
Activity中,将可以看到下图所示的界面。...} }); }} 上面程序中的onClick回调方法里面的代码指定了根据Intent来启动Activity。...这取决于Activity配置中 intent-fiIter.../>元素的配置。 intent-filter......另外上面程序中的代码并未指定目标Intent的Category属性,但该Intent 已有一个值为 android.intent.category.DEFAULT 的 Category 属性值,因此被启动...} }); }} 上面程序中的onClick回调方法里面的代码指定了该Intent的Action属性值为com.jinyu.cqkxzsxy.android.intent.action.TEST_ACTION
说明: Android系统使用IntentFilter 来寻找与隐式Intent相关的对象。 详细解释: 都是用来在一个activity中启动另外一个activity。...如果想隐式intent也不可以被跨应用启动只需要在androidmanifest.xml对应的activity中配置android:exported=”false”即可!...Android系统寻找与Intent请求意图最匹配的组件具体的选择方法 是:Android将Intent的请求内容和一个叫做IntentFilter的过滤器比较,IntentFilter中包含系统中所有可能的待选组件...如果IntentFilter中某一组件匹配隐式Intent请求的内容,那么Android就选择该组件作为该隐式Intent的目标组件。...Android如何知道应用程序能够处理某种类型的Intent请求呢?这需要应用程序在Android-Manifest.xml中声明自己所含组件的过滤器(即可以匹配哪些Intent请求)。
这就是Intent!!它不仅可以在同一个应用中起传递信息的作用,还是可以在不同的应用进行传递信息。这就使得我们的应用和系统中的其他应用进行交互有了可能,进而使得整个Android开发变得更加精彩。...Intent.如果不设置,则是隐式的Intent,Android系统将根据Intent Filter中的信息进行匹配....Action一个字符串命名的动作,Android中预定义了很多Action,可以参考Intent类查看,下面是文档中的几个动作 ?...Flag(标识) Android有很多标识,用于标记如何启动一个活动,是NEW_TASK还是其他等等,以及启动后怎么对待这个活动。。可以参考Intent类中的FLAG常量字段。...显示的Intent就是指定了组件名字的,隐式的就是没有指定Intent的组件名字,需要Android根据Intent中的Action、data、Category等来解析匹配。
Intent初级学习 New Android Project-> Project name:Intent Build Target:Android 2.2 Application name:IntentDemo..." 5 android:layout_height="wrap_content" 6 android:text="@string/mainBtn" 7...但是在实际应用中,我们会有很多个Activity,如何从一个Activity跳到其他的Activity,这时就需要用到Intent了,既然有多个Activity,那么我们就要创建另一个Activity文件...类, 42 //并且把名字为"back"参数的字符串传递到MainActivity类中 43 //同时会调用MainActivity类中的onActivityResult()方法 44..."str"作为参数传递到HongtenActivity类中 15 intent.putExtra("str", "Hello HongtenActivity"); 16
隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。...; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import...; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View...> android="http://schemas.android.com/apk/res/android" package="com.example.test_intent...:name="android.intent.action.MAIN" /> android:name="android.intent.category.LAUNCHER