显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。
隐式Intent:通过Intent Filter来实现的,它一般用在没有明确指出目标组件名称的前提下,一般是用于在不同应用程序之间。
一.显式Intent
一般情况下,一个Android应用程序中需要多个屏幕,即是多个Activity类,并且在这些Activity之间进行切换通过Intent机制来实现的。在同一个应用程序中切换Activity时,我们通常都知道要启动的Activity具体是哪一个,因此常用显式的Intent来实现的。
下面的例子是在同一应用程序中MainActivity启动SecondActivity,下面的代码中,主要是为“转到SecondActivity”按钮添加了OnClickListener,使得按钮被点击时执行onClick()方法,onClick()方法中则利用了Intent机制,来启动SecondActivity
二.隐式Intent
下面是同一应用程序中的Activity切换的例子,需要AndroidManifest.xml中增加Activity的声明,并设置对应的Intent Filter和Action,才能被Android的应用程序框架所匹配。
MainActivity.java
package com.android.change.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.btn);
// 响应按钮btn事件
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 实例化Intent
Intent it = new Intent();
//设置Intent的Action属性
it.setAction("com.android.activity.MY_ACTION");
// 启动Activity
startActivity(it);
}
});
}
}
SecondActivity.java
package com.android.change.activity;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="转到SecondActivity"
/>
</LinearLayout>
seond.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/second"
/>
</LinearLayout>
AndroidManifest.xml文件的18,19行修改了Intent Filter,这样SecondActivity才能够接收到MainActivity发送的Intent。因为在MainActivity的Intent发送的动作为"com.android.activity.MY_ACTION",而在18行里,SecondActivity设置的Action也为"com.android.activity.MY_ACTION",这样就能进行匹配。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.change.activity"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity" >
<intent-filter>
<action android:name = "com.android.activity.MY_ACTION" />
<category android:name = "android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
分享到:
相关推荐
本示例主要关注如何使用显示Intent和隐式Intent来启动Activity。 1. **显示Intent**: 显示Intent是明确指定目标Activity的Intent,通常在我们知道确切要启动的组件(Activity)时使用。创建显示Intent的代码如下...
通过以上对比分析可以看出,显示Intent和隐式Intent各有优势,在不同的应用场景下选择合适的方式可以使程序更加高效、安全。开发者应根据实际需求合理选择并使用这两种Intent类型,以实现更好的应用功能和用户体验。
本教程主要探讨显式Intent和隐式Intent以及Intent Filter的使用,旨在帮助开发者更好地理解和应用这些概念。 首先,让我们理解显式Intent。显式Intent是一种明确指定接收方的Intent。在创建显式Intent时,我们需要...
隐式Intent是一种灵活的机制,让一个应用能够启动另一个并未明确声明的组件,只要后者声明了可以处理特定动作和数据类型。 首先,理解Intent的基本概念是至关重要的。Intent在Android中是一个消息对象,用来传递...
但需要注意的是,为了确保用户体验和安全,应用在发送隐式Intent时,应尽可能明确意图,并提供用户可选择的接收者列表,尤其是当有多个应用能响应同一隐式Intent时。 在Android开发中,正确理解和使用隐式Intent至...
隐式Intent的工作原理是通过定义一个包含特定动作(Action)、数据(Data)、类别(Category)和额外数据(Extras)的Intent对象来发起请求。系统会遍历已安装的应用,查找匹配这些条件的BroadcastReceiver或...
当我们谈论“使用隐式Intent,创建一个启动器”时,我们实际上是在构建一个自定义的主屏幕应用,它能够通过系统级别的Intent调用来启动其他应用程序,替代用户手机上的默认启动器。以下是对这个主题的详细讲解: **...
Intent分为四种主要类型:显式Intent、隐式Intent、系统Intent和使用`startActivityForResult`的Intent。下面将对这四个部分进行详细介绍。 ### 1. 显式Intent 显式Intent是最直接的Intent类型,它们明确地指定要...
Intent 可以分为显式 Intent 和隐式 Intent 两种。显式 Intent 是指明确指出了目标组件名称的 Intent,而隐式 Intent 则是没有明确的目标组件名称的 Intent。 使用隐式 Intent 完成应用的步骤: 1. 创建 Intent ...
过滤器包含动作、数据URI、类别等元素,系统会对比Intent和过滤器来决定Intent应由哪个组件处理。 9. **Intent的生命周期** 在Activity中,Intent可以通过`onNewIntent(Intent intent)`方法获取,而在Service中,...
在 Android 中,Intent 分为两种:显式 Intent 和隐式 Intent。显式 Intent 是通过指定 Intent 组件名称来实现的, 一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的。隐式 Intent 是通过设置 ...
它分为显式Intent和隐式Intent两种类型。显式Intent通过指定目标组件的完整类名来调用,而隐式Intent则不指定具体接收者,而是基于IntentFilter来匹配合适的接收者。 IntentFilter是Android系统用来筛选和解析...
隐式启动则依赖于Intent的动作(Action)和数据(Data)。Android系统会根据Intent的Action、Data、Category等属性来寻找最适合处理Intent的Activity。例如,拨打电话可以这样启动: ```java Intent call = new ...
Intent可以分成两种:显示Intent和隐式Intent。当知道要跳转过去的目标Activity的名字时可以采用显示Intent。而隐式Intent则是指定了一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮...
Android中隐式Intent与Activity的匹配原则2022优秀文档 Android中隐式Intent与...通过配置<intent-filter>标签和指定合适的Action和Category,可以实现隐式Intent的匹配和激活,提高应用程序的灵活性和可扩展性。
在Android中,Intent主要有两种类型:显式Intent和隐式Intent。 - 显式Intent:明确指定要启动的目标组件(Activity或Service的全限定类名),适用于在同一应用内部通信。 - 隐式Intent:不指定具体组件,而是...
它分为显式Intent和隐式Intent两种类型。显式Intent通过指定目标组件的完整类名来调用,而隐式Intent则不指定具体接收者,而是基于Intent的动作(ACTION)、数据(DATA)、类别(CATEGORY)等元数据寻找合适的接收者...
本文实例讲述了Android学习之Intent中显示意图和隐式意图的用法。分享给大家供大家参考,具体如下: Intent(意图)主要是解决Android应用的各项组件之间的通讯。 Intent负责对应用中一次操作的动作、动作涉及数据、...