Android意向示例

时间:2020-02-23 14:28:59  来源:igfitidea点击:

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

安卓意向

意图是用于从另一个组件请求操作的对象。对一个结构执行一个抽象的操作。它用于从其他Android组件请求功能。简言之,意图是做某事的意图。我们可以通过使用意图做很多事情,比如从一个活动导航到另一个活动,通过摄像头应用程序拍照,网络搜索,在地图上搜索位置等等。这使得开发者可以轻松地混合不同的应用程序。

意向类型

意向有两种类型,显性意图和隐性意图。

明确意图

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

下面是在登录活动中应该如何调用它的代码。

Intent intent = new intent(this, homepageActivity);
startActivity(intent);

隐含意图

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

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

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

意向方法

有单独的机制向活动、服务和广播接收器传递意图。以下是几种方法的说明

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

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

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

intent object有两个主要组件。

动作Action:表示要执行的动作。它是故意客体的强制部分。要执行的操作可以是action_VIEW、action_EDIT等。

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

意向举例

下面是一个显示意图的示例。去你的Android工作室创建一个新的项目。此示例将打开theitroad.本地在你的安卓系统里。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout android:layout_width="368dp"
  android:layout_height="495dp"
  xmlns:tools="http://schemas.android.com/tools"
  tools:layout_editor_absoluteX="8dp"
  tools:layout_editor_absoluteY="8dp"
  xmlns:android="http://schemas.android.com/apk/res/android">

      <Button
          android:id="@+id/button"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentTop="true"
          android:layout_centerHorizontal="true"
          android:layout_marginTop="202dp"
          android:text="Visit theitroad.local" 
  </RelativeLayout>

ActivtyMain.java

package com.example.admin.intentexample;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

  Button button;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      button = (Button)findViewById(R.id.button);

      button.setOnClickListener(new View.OnClickListener() {

          @Override
          public void onClick(View v) {
              Intent i = new Intent(android.content.Intent.ACTION_VIEW,
              Uri.parse("http://www.theitroad.local"));
              startActivity(i);
          }
      });
  }
}