MCPcopy Index your code
hub / github.com/callstack/agent-device / setAndroidPhotoPermission

Function setAndroidPhotoPermission

src/platforms/android/settings.ts:323–348  ·  view source on GitHub ↗
(
  device: DeviceInfo,
  appPackage: string,
  pmAction: 'grant' | 'revoke',
)

Source from the content-addressed store, hash-verified

321}
322
323async function setAndroidPhotoPermission(
324 device: DeviceInfo,
325 appPackage: string,
326 pmAction: 'grant' | 'revoke',
327): Promise<void> {
328 const sdkInt = await getAndroidSdkInt(device);
329 const candidates =
330 sdkInt !== null && sdkInt >= 33
331 ? ['android.permission.READ_MEDIA_IMAGES', 'android.permission.READ_EXTERNAL_STORAGE']
332 : ['android.permission.READ_EXTERNAL_STORAGE', 'android.permission.READ_MEDIA_IMAGES'];
333
334 const failures: Array<{ permission: string; stderr: string; exitCode: number }> = [];
335 for (const permission of candidates) {
336 const result = await runAndroidAdb(device, ['shell', 'pm', pmAction, appPackage, permission], {
337 allowFailure: true,
338 });
339 if (result.exitCode === 0) return;
340 failures.push({ permission, stderr: result.stderr, exitCode: result.exitCode });
341 }
342
343 throw new AppError('COMMAND_FAILED', `Failed to ${pmAction} Android photos permission`, {
344 appPackage,
345 sdkInt,
346 attempts: failures,
347 });
348}
349
350async function setAndroidNotificationPermission(
351 device: DeviceInfo,

Callers 1

setAndroidSettingFunction · 0.85

Calls 3

runAndroidAdbFunction · 0.90
getAndroidSdkIntFunction · 0.85
pushMethod · 0.80

Tested by

no test coverage detected