原文: https://javatutorial.net/android-intent-example

本教程通过示例说明了 Android 的意图,类型和方法。

Android 意图

意图是用于向另一个组件请求操作的对象。 目的是一种数据结构,其中包含要执行的操作的抽象描述。 它用于从其他 Android 组件请求功能。 简而言之,意图是做某事的意图。 通过使用意图,我们可以做很多事情,例如从一个活动转到另一个活动,通过相机应用程序拍照,网络搜索,在地图上搜索位置等等。 这使开发人员可以轻松地重新混合不同的应用程序。

意图类型

有两种类型的意图,显式和隐式意图。

显式意图

在显式意图中,目标组件名称在创建意图时直接传递到意图中。 当一个活动调用另一个活动时,通常使用显式意图。 例如,我们有两个活动 - 登录活动和主页活动,登录应用程序将用户带到主页后,请参见下图。

Android 意图示例 - 图1

显式意图

这是在登录活动中应如何调用的代码。

  1. Intent intent = new intent(this, homepageActivity);
  2. startActivity(intent);

隐式意图

在显式意图中,目标组件名称在创建时不会在意图中传递。 Android 自行决定应在哪个应用程序的哪个组件中接收此意图。 显式意图用于激活其他应用程序中的组件。

例如,如果您的应用程序需要打开手机中的联系人(此意图需要另一个应用程序即手机中的联系人),那么代码将如下所示

  1. Intent intent = new Intent();
  2. Intent.setAction(android.content.intent.ACTION_VIEW);
  3. Intent.setDeta(ContactsContract.Contacts.intent.CONTENT_URI);
  4. startActivity(intent);

因此,它将如下所示打开 Android 联系人

Android 意图示例 - 图2

Android 联系人

目标方法

有用于向活动,服务和广播接收者传达意图的单独机制。 这是几种方法的解释

Context.startActivity():此方法用于启动新活动,目的是作为参数传递的。

Context.startService():此方法用于启动新服务,目的对象作为参数传递。

Context.sendBroadcast():此方法用于将消息发送到任何广播接收器。 意图对象作为参数传递。

意图对象有两个主要组成部分。

动作:显示要执行的动作。 它是意图对象的必修部分。 要执行的动作可以是ACTION_VIEWACTION_EDIT等。

数据:它显示要操作的数据。 它可以是简单的数据类型或 URI。

意图的示例

这是一个显示意图的示例。 转到您的 Android Studio 并创建一个新项目。 本示例将在您的 Android 中打开javatutorial.net

这是activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout android:layout_width="368dp"
  3. android:layout_height="495dp"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. tools:layout_editor_absoluteX="8dp"
  6. tools:layout_editor_absoluteY="8dp"
  7. xmlns:android="http://schemas.android.com/apk/res/android">
  8. <Button
  9. android:id="@+id/button"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:layout_alignParentTop="true"
  13. android:layout_centerHorizontal="true"
  14. android:layout_marginTop="202dp"
  15. android:text="Visit JavaTutorial.net" />
  16. </RelativeLayout>

这是ActivtyMain.java

  1. package com.example.admin.intentexample;
  2. import android.content.Intent;
  3. import android.net.Uri;
  4. import android.support.v7.app.AppCompatActivity;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.widget.Button;
  8. public class MainActivity extends AppCompatActivity {
  9. Button button;
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.activity_main);
  14. button = (Button)findViewById(R.id.button);
  15. button.setOnClickListener(new View.OnClickListener() {
  16. @Override
  17. public void onClick(View v) {
  18. Intent i = new Intent(android.content.Intent.ACTION_VIEW,
  19. Uri.parse("http://www.javatutorial.net"));
  20. startActivity(i);
  21. }
  22. });
  23. }
  24. }

这是它的样子

Android 意图示例 - 图3

意图示例

Android 意图示例 - 图4

选择浏览器

Android 意图示例 - 图5

Java 教程

您可以从链接下载此代码。