settings.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { AdbCommandBase } from "@yume-chan/adb";
  2. export type SettingsNamespace = 'system' | 'secure' | 'global';
  3. export type SettingsResetMode = 'untrusted_defaults' | 'untrusted_clear' | 'trusted_defaults';
  4. // frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsService.java
  5. export class Settings extends AdbCommandBase {
  6. // TODO: `--user <user>` argument
  7. public base(command: string, namespace: SettingsNamespace, ...args: string[]) {
  8. return this.adb.subprocess.spawnAndWaitLegacy(['settings', command, namespace, ...args]);
  9. }
  10. public get(namespace: SettingsNamespace, key: string) {
  11. return this.base('get', namespace, key);
  12. }
  13. public delete(namespace: SettingsNamespace, key: string) {
  14. return this.base('delete', namespace, key);
  15. }
  16. public put(namespace: SettingsNamespace, key: string, value: string, tag?: string, makeDefault?: boolean) {
  17. return this.base(
  18. 'put',
  19. namespace,
  20. key,
  21. value,
  22. ...(tag ? [tag] : []),
  23. ...(makeDefault ? ['default'] : []),
  24. );
  25. }
  26. public reset(namespace: SettingsNamespace, mode: SettingsResetMode): Promise<string>;
  27. public reset(namespace: SettingsNamespace, packageName: string, tag?: string): Promise<string>;
  28. public reset(namespace: SettingsNamespace, modeOrPackageName: string, tag?: string): Promise<string> {
  29. return this.base(
  30. 'reset',
  31. namespace,
  32. modeOrPackageName,
  33. ...(tag ? [tag] : []),
  34. );
  35. }
  36. public async list(namespace: SettingsNamespace): Promise<string[]> {
  37. const output = await this.base('list', namespace);
  38. return output.split('\n');
  39. }
  40. }