Cobrowse.io Docs
  • Getting started
  • SDK Installation
    • Web
    • iOS
    • Android
    • React Native
    • Flutter
    • .NET Mobile
    • macOS
    • Windows
  • SDK Features
    • Account config
    • Identify your devices
    • Use 6-digit codes
    • Redact sensitive data
    • Viewing PDFs
    • Universal Cobrowse
    • Customize the interface
      • Active session controls
      • 6-digit code screen
      • User consent dialog
      • Remote control consent dialog
      • Full device consent dialog
      • Localization / translation
    • Initiate sessions with push
    • Listening for events
    • Full device capabilities
      • Full device screen sharing
      • Full device remote control
      • Managing full device mode
    • Advanced configuration
      • Starting and stopping the SDK
      • Declaring capabilities
      • Intercepting mobile SDK network requests
      • Web
        • IFrames support
        • IE 11 polyfills
        • Cross-domain session support
        • Ignore Views
      • iOS
        • Alternate render method
        • Custom touch handling
      • Android
        • Backporting TLS to older Android versions
  • Agent-side integrations
    • Agent-side overview
    • Platform integrations
      • Zendesk
      • Salesforce
        • Migrating from legacy to v2
        • Salesforce (Legacy)
      • Genesys
        • Genesys Cloud
        • Engage Workspace Web Edition (WWE)
        • Engage Workspace Desktop Edition (WDE)
      • Intercom
      • Freshworks
      • Talkdesk
      • NICE
    • Custom integrations
    • Agent SDK
      • API Reference
      • Sample code snippets
    • Authentication (JWTs)
      • JWT Policies
    • Authentication (SAML 2.0)
    • IFrame embeds
  • Enterprise self-hosting
    • Self-hosting overview
    • Docker Compose
    • Helm chart
      • Image Pull Secret
      • Environment Variables
      • Optional recording components
      • Pod Annotations
    • AWS terraform
      • AWS metrics configuration
    • Azure terraform
      • Azure metrics configuration
    • GCP terraform
      • GCP metrics configuration
    • Sizing guidelines
    • Running your instance
      • Adding a superuser
      • Limiting account creation
      • Limiting magic link recipients
      • Configuring SMTP
      • Managing your deployment
    • Monitoring your instance
      • Available metrics
      • Self-Hosted Prometheus
    • Advanced configuration
      • Air gap configuration
      • Pin web SDK version
      • L7 firewall configuration
      • Docker proxy configuration
    • Troubleshooting
Powered by GitBook
On this page
  • Configuring full device remote control
  • Detecting AccessibilityService state on Android

Was this helpful?

  1. SDK Features
  2. Full device capabilities

Full device remote control

Enable full device remote control on Android and Windows SDKs, allowing support agents to modify system settings or control apps on a user's device.

PreviousFull device screen sharingNextManaging full device mode

Last updated 3 months ago

Was this helpful?

Full device remote control allows your support agents to take full control of a user's device, for example to change system settings or control other apps. This feature is only supported on the Android and Windows SDKs.

Configuring full device remote control

On platforms that support full device remote control, there may be extra steps required during your SDK integration:

Due to recent Google Play Store policy changes these instructions have been updated. You must be using SDK version v2.16.0 or above. See the for details on listing your app when using this API.

Full device remote control for Android, including unattended access, uses an Accessibility Service that must be enabled on the device to grant access.

This feature is supported in API 21 (5.0 Lollipop) and above.

Add a new service declaration to your application AndroidManifest.xml file:

<service
    android:name="io.cobrowse.CobrowseAccessibilityService"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
    tools:node="merge" />

When added, your manifest should look something similar to this:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    ...
    <application>
        ...
        <service
            android:name="io.cobrowse.CobrowseAccessibilityService"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
            tools:node="merge" />

    </application>
</manifest>

Enable the accessibility service the Cobrowse SDK will have added in the main device settings, eg. Settings -> Accessibility -> Your App Name. Note: this only has to be done the very first time.

Uploading to the Google Play Store?

Add the following resource via an XML file to enable a consent request to your users each time full device remote control is requested:

<bool
    name="cobrowse_automatically_accept_media_projection_prompt">false
</bool>

Please follow the Android documentation to implement full device remote control using React Native.

Please follow the Android documentation to implement full device remote control using Flutter.

Please follow the Android documentation to implement full device remote control using .NET / MAUI.

Full device remote control available after user consents to the macOS permission and consent prompt, no extra integration needed.

Full device remote control by default, no extra integration needed.

Detecting AccessibilityService state on Android

We have built some logic and APIs to detect if the Android accessibility service is running, and if not, to deep link the user to the settings to enable it.

Open system accessibility settings with:

CobrowseAccessibilityService.showSetup();
import { CobrowseAccessibilityService } from 'cobrowse-sdk-react-native'
CobrowseAccessibilityService.showSetup(...);
CobrowseAccessibilityService.showSetup(...);
CobrowseAccessibilityService.ShowSetup(...)

Check if accessibility service is already running with:

CobrowseAccessibilityService.isRunning();
import { CobrowseAccessibilityService } from 'cobrowse-sdk-react-native'
CobrowseAccessibilityService.isRunning(...);
CobrowseAccessibilityService.isRunning(...);
CobrowseAccessibilityService.IsRunning(...)

Deep link user to accessibility settings with:

Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Intent intent = new Intent(global::Android.Provider.Settings.ActionAccessibilitySettings);
intent.AddFlags(ActivityFlags.NewTask);
StartActivity(intent);

Due to limitations and restrictions set by Apple we can not support full device remote control. Agents are able to view the but not use any of the agent tools.

The Cobrowse.io SDK for Flutter does not provide a default implementation to launch the accessibility service setup, but you can access this API in the native SDK using .

The Cobrowse.io SDK for Flutter does not provide a default implementation to detect the state of the accessibility service, but you can access this API in the native SDK using .

Google Play Store requirements
full device
Flutter platform channels
Flutter platform channels