Skip to main content
Glama

android_uiautomator_clear_text

Clear text from Android UI elements by resource ID using ADB commands. Remove input field content for testing automation or device control.

Instructions

Clear text from a UI element by resource ID

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
resourceIdYesResource ID of the element to clear
deviceSerialNoSpecific device serial number to target (optional)

Implementation Reference

  • The main handler function for the 'android_uiautomator_clear_text' tool. It validates the input arguments and delegates the clearing action to the ADB wrapper's clearTextByResourceId method.
    export async function uiautomatorClearTextHandler(
      adb: ADBWrapper,
      args: any
    ): Promise<{ content: Array<{ type: string; text: string }> }> {
      const { resourceId, deviceSerial } = args as UIAutomatorClearTextArgs;
    
      if (!resourceId || typeof resourceId !== 'string') {
        throw new Error('Invalid resource ID: resourceId must be a non-empty string');
      }
    
      try {
        await adb.clearTextByResourceId(resourceId, deviceSerial);
    
        return {
          content: [
            {
              type: 'text',
              text: `Successfully cleared text on element with resource-id: ${resourceId}`,
            },
          ],
        };
      } catch (error) {
        throw new Error(`UIAutomator clear text failed: ${error instanceof Error ? error.message : String(error)}`);
      }
    }
  • Core helper method in ADBWrapper that implements the text clearing logic: dumps UI hierarchy, parses element bounds, taps to focus, selects all (Ctrl+A), and deletes.
    async clearTextByResourceId(resourceId: string, deviceSerial?: string): Promise<void> {
      const device = await this.getTargetDevice(deviceSerial);
      const hierarchyFile = '/sdcard/window_dump.xml';
      
      await this.exec(['shell', 'uiautomator', 'dump', hierarchyFile], device);
      const { stdout } = await this.exec(['shell', 'cat', hierarchyFile], device);
      await this.exec(['shell', 'rm', hierarchyFile], device);
      
      const boundsRegex = new RegExp(`resource-id="${resourceId}"[^>]*bounds="\\[(\\d+),(\\d+)\\]\\[(\\d+),(\\d+)\\]"`);
      const match = stdout.match(boundsRegex);
      
      if (match) {
        const x1 = parseInt(match[1], 10);
        const y1 = parseInt(match[2], 10);
        const x2 = parseInt(match[3], 10);
        const y2 = parseInt(match[4], 10);
        
        const centerX = Math.floor((x1 + x2) / 2);
        const centerY = Math.floor((y1 + y2) / 2);
        
        await this.touch(centerX, centerY, 100, device);
        await this.sendKeyEvent('KEYEVENT_CTRL_A', device);
        await this.sendKeyEvent('KEYEVENT_DEL', device);
      } else {
        throw new Error(`Element with resource-id ${resourceId} not found in UI hierarchy`);
      }
    }
  • Input schema definition for the tool, defining the expected parameters (resourceId required, deviceSerial optional).
    {
      name: 'android_uiautomator_clear_text',
      description: 'Clear text from a UI element by resource ID',
      inputSchema: {
        type: 'object',
        properties: {
          resourceId: {
            type: 'string',
            description: 'Resource ID of the element to clear',
          },
          deviceSerial: {
            type: 'string',
            description: 'Specific device serial number to target (optional)',
          },
        },
        required: ['resourceId'],
      },
    },
  • src/index.ts:484-485 (registration)
    Tool registration in the switch statement that dispatches calls to the appropriate handler function.
    case 'android_uiautomator_clear_text':
      return await uiautomatorClearTextHandler(this.adb, args);
  • TypeScript interface defining the arguments for the handler, matching the tool schema.
    interface UIAutomatorClearTextArgs {
      resourceId: string;
      deviceSerial?: string;
    }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jduartedj/android-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server