Android意向示例
本教程通过示例说明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); } }); } }