18d307f52SEvan Baconimport { AndroidAppIdResolver } from './AndroidAppIdResolver'; 28d307f52SEvan Baconimport { AndroidDeviceManager } from './AndroidDeviceManager'; 38d307f52SEvan Baconimport { Device } from './adb'; 48d307f52SEvan Baconimport { startAdbReverseAsync } from './adbReverse'; 5*8a424bebSJames Ideimport { AppIdResolver } from '../AppIdResolver'; 6*8a424bebSJames Ideimport { BaseOpenInCustomProps, BaseResolveDeviceProps, PlatformManager } from '../PlatformManager'; 78d307f52SEvan Bacon 88d307f52SEvan Baconinterface AndroidOpenInCustomProps extends BaseOpenInCustomProps { 98d307f52SEvan Bacon launchActivity?: string; 108d307f52SEvan Bacon} 118d307f52SEvan Bacon 128d307f52SEvan Baconexport class AndroidPlatformManager extends PlatformManager<Device, AndroidOpenInCustomProps> { 138d307f52SEvan Bacon constructor( 148d307f52SEvan Bacon protected projectRoot: string, 158d307f52SEvan Bacon protected port: number, 168d307f52SEvan Bacon options: { 178d307f52SEvan Bacon /** Get the base URL for the dev server hosting this platform manager. */ 188d307f52SEvan Bacon getDevServerUrl: () => string | null; 19212e3a1aSEric Samelson /** Expo Go URL */ 20212e3a1aSEric Samelson getExpoGoUrl: () => string; 21212e3a1aSEric Samelson /** Get redirect URL for native disambiguation. */ 22212e3a1aSEric Samelson getRedirectUrl: () => string | null; 238d307f52SEvan Bacon /** Dev Client URL. */ 248d307f52SEvan Bacon getCustomRuntimeUrl: (props?: { scheme?: string }) => string | null; 258d307f52SEvan Bacon } 268d307f52SEvan Bacon ) { 278d307f52SEvan Bacon super(projectRoot, { 288d307f52SEvan Bacon platform: 'android', 298d307f52SEvan Bacon ...options, 308d307f52SEvan Bacon resolveDeviceAsync: AndroidDeviceManager.resolveAsync, 318d307f52SEvan Bacon }); 328d307f52SEvan Bacon } 338d307f52SEvan Bacon 348d307f52SEvan Bacon async openAsync( 358d307f52SEvan Bacon options: 368d307f52SEvan Bacon | { runtime: 'expo' | 'web' } 378d307f52SEvan Bacon | { runtime: 'custom'; props?: Partial<AndroidOpenInCustomProps> }, 388d307f52SEvan Bacon resolveSettings?: Partial<BaseResolveDeviceProps<Device>> 398d307f52SEvan Bacon ): Promise<{ url: string }> { 408d307f52SEvan Bacon await startAdbReverseAsync([this.port]); 418d307f52SEvan Bacon return super.openAsync(options, resolveSettings); 428d307f52SEvan Bacon } 438d307f52SEvan Bacon 448d307f52SEvan Bacon _getAppIdResolver(): AppIdResolver { 458d307f52SEvan Bacon return new AndroidAppIdResolver(this.projectRoot); 468d307f52SEvan Bacon } 478d307f52SEvan Bacon 488d307f52SEvan Bacon _resolveAlternativeLaunchUrl( 498d307f52SEvan Bacon applicationId: string, 508d307f52SEvan Bacon props?: Partial<AndroidOpenInCustomProps> 518d307f52SEvan Bacon ): string { 528d307f52SEvan Bacon return props?.launchActivity ?? `${applicationId}/.MainActivity`; 538d307f52SEvan Bacon } 548d307f52SEvan Bacon} 55