---
title: "响应 Android SDK 中的按钮操作"
description: "使用 Adapty 在 Android 中处理付费墙按钮操作，提升应用变现效果。"
---

如果您使用 Adapty 付费墙编辑工具构建付费墙，正确设置按钮至关重要：

1. 在付费墙编辑工具中[添加按钮](paywall-buttons)，并为其分配预置操作或创建自定义操作 ID。
2. 在应用代码中，为您分配的每个操作编写处理逻辑。

本指南介绍如何在代码中处理自定义操作和预置操作。

:::warning
**只有购买、恢复购买、关闭付费墙和打开 URL 会被自动处理。** 其他所有按钮操作都需要在应用代码中正确实现响应逻辑。
:::

## 关闭付费墙 \{#close-paywalls\}

要添加一个用于关闭付费墙的按钮：

1. 在付费墙编辑工具中，添加一个按钮并为其分配 **Close** 操作。
2. 在应用代码中，实现 `close` 操作的处理逻辑，用于关闭付费墙。

:::info
在 Android SDK 中，`close` 操作默认会触发关闭付费墙。但如果需要，您可以在代码中覆盖此行为。例如，关闭一个付费墙可能会触发打开另一个付费墙。
:::

```kotlin
override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
    when (action) {
        AdaptyUI.Action.Close -> (context as? Activity)?.onBackPressed() // default behavior
    }
}
```

## 从付费墙打开 URL \{#open-urls-from-paywalls\}

:::tip
如果您想添加一组链接（例如使用条款和购买恢复），可以在付费墙编辑工具中添加 **Link** 元素，并以与具有 **Open URL** 操作的按钮相同的方式处理它。
:::

要添加一个从付费墙打开链接的按钮（例如**使用条款**或**隐私政策**）：

1. 在付费墙编辑工具中，添加一个按钮，为其分配 **Open URL** 操作，并输入您要打开的 URL。
2. 在应用代码中，实现 `openUrl` 操作的处理逻辑，在浏览器中打开接收到的 URL。

:::info
在 Android SDK 中，`openUrl` 操作默认会触发打开 URL。但如果需要，您可以在代码中覆盖此行为。
:::

```kotlin
override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {    
       is AdaptyUI.Action.OpenUrl -> {
           val intent = Intent(Intent.ACTION_VIEW, Uri.parse(action.url)) // default behavior
           context.startActivity(intent)
       }
   }
}
```

## 登录应用 \{#log-into-the-app\}

要添加一个用于用户登录应用的按钮：

1. 在付费墙编辑工具中，添加一个按钮并为其分配 **Login** 操作。
2. 在应用代码中，实现 `login` 操作的处理逻辑，用于识别您的用户。

```kotlin
override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {
       AdaptyUI.Action.Login -> {
           val intent = Intent(context, LoginActivity::class.java)
           context.startActivity(intent)
       }
   }
}
```

## 处理自定义操作 \{#handle-custom-actions\}

要添加一个用于处理其他操作的按钮：

1. 在付费墙编辑工具中，添加一个按钮，为其分配 **Custom** 操作，并设置一个 ID。
2. 在应用代码中，实现您创建的操作 ID 的处理逻辑。

例如，如果您有另一组订阅套餐或一次性购买商品，可以添加一个按钮来展示另一个付费墙：

```kotlin
override fun onActionPerformed(action: AdaptyUI.Action, context: Context) {
   when (action) {
       is AdaptyUI.Action.Custom -> {
           if (action.customId == "openNewPaywall") {
               // Display another paywall
           }
       }
   }
}
```