因为每一个Acticity的任务不一样,所以经常互在各个Activity之间进行跳转,在Android中这个动作是靠Intent来完成的。...Intent的定义: Intent是Android系统用来抽象描述要执行的一个操作,也可以在不同组件之间进行沟通和消息传递。...显式Intent和隐式Intent: 显式的Intent就是你已经知道要启动的组件名称,比如某个Activity的包名和类名,在Intent中明确的指定了这个组件(Activity),一般来说这种Intent...从Android5.0(API 21),系统会抛出异常当你用隐式的Intent去调用bindService()方法。...想要了解更多的action可以查看Intent源码或者api,在Intent中定义了很多action,除了在Android framework中,在别处也定义了很多action,比如在Settings应用中
" /> intent-filter> 在标签中我们指明了当前活动能够响应的 action 和 category 只有这两个同时匹配上Intent中指定的两个,此活动才响应该...标签内指定的category是一种默认的,在调用startActivityg()方法会自动将category添加到Intent中。...,所以在标签内添加一个category的声明: android:name="com.bobo1998.test0422.MY_CATEGORY"/> 更多隐式Intent的用法 使用隐式...我们还可以在intent-filter>标签中配置一个标签,用于更精确的指定当前活动能够响应什么类型的数据。... 配置了当前活动能够响应的action是android.intent.action.VIEW的常量值, 另外在标签中通过android:scheme指定了数据协议必须是
如 例如,如果你在应用中构建一个名为DownloadService的服务,用于从Web下载文件,可以使用以下代码启动: // Executed in an Activity, so 'this' is...例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用共享内容 例如,如果希望与其他人共享的内容,可以使用 ACTION_SEND 操作创建 Intent,并添加指定要共享的内容...= null) { // Update UI to reflect text being shared } } 您可以使用 android:priority="num" 属性在...Intent 过滤器中控制应用在列表中的位置 2.安全问题 滥用Activity返回值 如果受害应用使用startActivityForResult(),攻击应用使用setResult()将数据传输到受害者应用的...数据发送到服务器中。
页面一布局如下: 实现效果:在页面一的输入文本框内输入文本,点击跳转按钮可以调到页面二,并且将输入的文本传到页面二实现传值 页面一逻辑代码如下: et_text = (EditText) findViewById...创建intent * 3....intent = new Intent(MainActivity.this,Main2Activity.class); //创建信使进行跳转页面 intent.putExtra...("text",s); //将获取输入文本的内容放到putExtra中 startActivity(intent); //开启新页面 }...赋值 */ Intent intent = getIntent(); //获取信使 String text = intent.getStringExtra
问题 我们期望这种类型的交互流程如下图所示: 流程图展示了一个启动回调 activity 的 Intent 如何作为一个扩展数据添加到一个启动 Service 的 Intent 中,然后使用此 Intent...组件的 Intent 中。...这样的调用方式会产生两个不良的后果: 由于 ClientCallbackActivity 是被 Provider 应用从外部启动的,在清单文件中必须将其标识为 exported,这样不仅 Provider...流程图展示了,如何通过精心构建出的 Intent 来启动 Provider 应用中的 ApiSensitiveActivity,即使它没有被标记为 exported,并且也不应该被其他应用启动。...如果您熟悉关于 notification 处理或 alarm 管理的 API,您会注意到,它们使用了 PendingIntents 去激活某项操作或者在应用内进行 alarm 提示。
android.intent.category.DEFAULT"),在你的Intent中设定该值为Intent的 Action就直接能跳转到你自己的Intent接收者中,因为这个Action在系统中是唯一的...,一般不要去在Intent中设置它,如果你写Intent的接收者就在Manifest.xml的Activity的 IntentFilter中包含android.category.DEFAULT,这样所有不设置...附录: String "android.intent.action.ADD_SHORTCUT" 动作:在系统中添加一个快捷方式。....String "android.intent.action.INSERT" 动作:在容器中插入一个空项 (item)。...String "android.intent.category.LAUNCHER" 类别:Activity 应该被显示在顶级的 launcher 中。
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 中的各个页面。...Scheme 路径的规则: :// : [||] 设置 Scheme 在 AndroidManifest.xml...type=jeanboy">打开 App 在 SchemeActivity 中可以处理 Scheme 跳转的参数: public class SchemeActivity extends AppCompatActivity
View.OnClickListener() { @Override public void onClick(View view) { Intent...i = new Intent(getActivity(), test.class); startActivity(i); } }...); return view; } } 顺便把Activity中的跳转也记录在下面,方便对比 ImageView btn1 = findViewById(R.id.btn1);...View.OnClickListener() { @Override public void onClick(View v) { Intent...i = new Intent(MainActivity.this, shouye.class); startActivity(i); }
前言: 上一篇文章给大家聊了Intent的用法,如何用Intent启动Activity和隐式Intent,这一篇文章给大家聊聊如何利用Intent在Activity之间进行沟通。...mode,用singleTask启动Activity,那个Activity在另外的一个Activity栈中,你会立刻收到RESULT_CANCELED消息; 不能在Activity生命周期函数onResume...: 在被启动的Activity中你可以接收启动这个Activity的Intent,在生命周期范围内都能调用getIntent()来获取这个Intent,但是一般都是在onCreat和onStart函数中获取...")) { // Handle intents with text ... } } 设置返回Intent: 上面介绍了怎么在onActivityResult()中处理Intent...,但是怎么在你的应用中设置这个返回Intent呢?
Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将...下面以Action为例: AndroidManifest.xml文件中,首先被调用的Activity要有一个带有并且包含的Activity,设定它能处理的Intent,并且category设为"android.intent.category.DEFAULT..."/> intent-filter> 然后,在MainActivity,才可以通过这个action name找到上面的Activity。...设为可被implicit启动的 CATEGORY_LAUNCHER 把一个action设置为在顶级执行。...中。
前言 小伙伴们,在前面的一系列文章中我们分别介绍了Android视图控件、Android布局、Android四大组件,本文我们单独介绍一下Android中一个非常重要的内容Intent的使用。...一 Intent基本介绍 Intent是Android中的一个基本组件,用于在应用内的不同组件(如活动、服务和广播接收器)之间进行通信和交互。...通过putExtra()方法将数据放入Intent中,然后在目标活动中通过getXXXExtra()方法获取数据。...(intent); 在目标活动中获取数据: Intent intent = getIntent(); String value = intent.getStringExtra("key"); 启动服务:...intent.addCategory(Intent.CATEGORY_LAUNCHER); 4.Extra(附加数据):用于在Intent中传递额外的数据,可以使用putExtra()方法添加数据。
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
函数里面会把它设置为false; 以下就是通过BROADCAST_INTENT_MSG消息放入到消息队列里面,最后传递给mHandler,从这个角度来说Intent最后也是通过线程本身的消息队列来实现Intent...以下介绍一下这个函数的流程: 1, 先推断fromMsg,假设是通过消息发送过来的就为真,否则为假; 假设为真mBroadcastsScheduled = false,这种话在函数scheduleBroadcastsLocked...receivers来接收消息,这个过程后面在串行intent 的时候也会碰到,我们留到后面讨论,这里仅仅须要知道它通过一个while循环把Intent发送给关注这个Intent的全部的receivers...; processCurBroadcastLocked 从这里能够看出最后通过Process.start启动了ActivityThread.java的进程,我们看看这个线程启动后的运行逻辑 首先是在进入主循环之前调用...attachApplication通过binder调用进入到activityManagerService.java的进程; 这 个server进程在把我们先前设置的mPendingBroadcast设置为
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
Category(类别)检测 类别在中是通过标记定义的,Category和Action一样,他们的名字都是一个字符串定义,但是我们在代码中可以使用对应的类别常量,在xml文件定义中只能使用定义好的字符串...Android的Intent类中提供了很多内置的类别定义,一中类别代表一个意思,可以参考说明使用。。...比如android.intent.category.LAUNCHER标表示你的应用会展示在启动列表页面,经常和android.intent.action.MAIN搭配使用 下面通过一个例子来说明Category...这是,因为我们的Intent定义了一个Category,这个Category在CategoryActivity和Category2Activity里都有,都能匹配上,所以就会弹出这两个Activity供我们选择...但是intent-filter的可以有额外的Category .再次提醒: Android对所有传递给 Context.startActivity()的隐式intent至少包含”android.intent.category.DEFAULT
Intent初级学习 New Android Project-> Project name:Intent Build Target:Android 2.2 Application name:IntentDemo...前面说到用Intent来拨打电话和发送短信,主要是介绍了Intent的一些简单方法,这里Intent启动了另一个Activity,在之前的内容都是在一个Activity中进行操作的。...但是在实际应用中,我们会有很多个Activity,如何从一个Activity跳到其他的Activity,这时就需要用到Intent了,既然有多个Activity,那么我们就要创建另一个Activity文件...18 Intent intent = getIntent(); 19 // 在MainActivity那边是setExtras(name,key) 20 // 在这里就是...MainActivity中的定义的REQUEST_CODE比较 30 //如果我们在MainActivity类中有不止一个Button时, 31 //都调用了startActivityForResult
朋友们在开发的时候对Intent肯定并不陌生,下面总结了一下Intent除了用在activity之间的跳转,还可以 在哪些地方使用: 1.显示网页 Uri uri = Uri.parse...(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(
这就是Intent!!它不仅可以在同一个应用中起传递信息的作用,还是可以在不同的应用进行传递信息。这就使得我们的应用和系统中的其他应用进行交互有了可能,进而使得整个Android开发变得更加精彩。...Intent Intent是怎样匹配的 一:前言 在正式介绍Intent之前,我们先看下上面说的Activity、Service和Broadcast Receiver是怎样传递Intent。...Intent.如果不设置,则是隐式的Intent,Android系统将根据Intent Filter中的信息进行匹配....Action一个字符串命名的动作,Android中预定义了很多Action,可以参考Intent类查看,下面是文档中的几个动作 ?...显示的Intent就是指定了组件名字的,隐式的就是没有指定Intent的组件名字,需要Android根据Intent中的Action、data、Category等来解析匹配。
区别 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。...隐式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...:name="android.intent.action.MAIN" /> android:name="android.intent.category.LAUNCHER
数据(data)检测 data标记也是在intent-filter中定义的,大致格式如下: intent-filter> android:name="android.intent.action.VIEW...="text/plain"> intent-filter> 这样在单击txt文件的时候就可以选择我们的这个Activity...假定我们定义的Intent Filter 的data标签为集合A,传递的Intent中包含的data为集合B,当B是A的子集时就通过了(Action和Category也得检测通过)。...Intent是一个很好的设计,它提供了一种在各个组建之间通信的方式,也为我们使用其他的应用的功能提供了可能,这样如果我们想在自己的应用打开一个网页,我们就不用特意迁入一个webview,我们直接调用Android...最后值得一提的是PackageManager这个类中为我们提供了一系列的query…()方法,可以让我们根据我们定义的Intent查询特定的匹配Intent Filter标记的所有组件。。
领取专属 10元无门槛券
手把手带您无忧上云