Android Intent的几种用法详细解析


在Android开发中,Intent是一个非常核心且强大的概念,它用于在不同组件(如Activity、Service等)之间传递消息或数据。Intent的用法多样,以下是几种常见的用法详细解析:

### 1. 启动新的Activity

这是Intent最常见的用法之一。通过创建一个Intent实例,并设置目标Activity的类名或Action,可以启动一个新的Activity。


Intent intent = new Intent(this, TargetActivity.class);
startActivity(intent);

或者使用Action(需在AndroidManifest.xml中声明):


Intent intent = new Intent("com.example.action.SHOW");
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);

### 2. 传递数据

Intent不仅可以用来启动Activity,还可以携带数据。通过Intent的putExtra()方法,可以附加各种类型的数据到Intent中。


Intent intent = new Intent(this, TargetActivity.class);
intent.putExtra("key", "value"); // 传递字符串
intent.putExtra("keyInt", 123); // 传递整型
startActivity(intent);

在目标Activity中,通过getIntent().getExtras()或getIntent().getStringExtra("key")等方法获取数据。

### 3. 调用系统服务

Intent也可以用来调用系统级别的服务,如拨打电话、发送短信等。这通常通过设置Intent的Action和必要的URI或数据来实现。


// 拨打电话
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:123456789"));
startActivity(intent);

// 发送短信
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:123456789"));
intent.putExtra("sms_body", "Hello from my app");
startActivity(intent);

### 4. 启动Service

Intent还可以用来启动或绑定到Service。Service是Android中执行长时间运行操作但不提供用户界面的应用组件。


Intent intent = new Intent(this, MyService.class);
startService(intent); // 启动Service

或者绑定到Service:


Intent intent = new Intent(this, MyService.class);
bindService(intent, myServiceConnection, Context.BIND_AUTO_CREATE);

### 5. 广播Intent

广播Intent允许应用发送消息到所有监听该Intent的组件(如Activity、Service等)。这可以用于通知其他应用或组件发生了某个事件。


Intent intent = new Intent("com.example.broadcast.MY_EVENT");
intent.putExtra("message", "Hello, this is a broadcast!");
sendBroadcast(intent);

以上是Android Intent的几种常见用法。Intent是Android应用开发中非常重要的概念,它提供了组件间通信的灵活方式。