io.appium.settings 5.4.0 → 5.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/apks/settings_apk-debug.apk +0 -0
- package/build/lib/client.d.ts +9 -0
- package/build/lib/client.d.ts.map +1 -1
- package/build/lib/client.js +20 -2
- package/build/lib/client.js.map +1 -1
- package/build/lib/constants.d.ts +2 -0
- package/build/lib/constants.d.ts.map +1 -1
- package/build/lib/constants.js +3 -1
- package/build/lib/constants.js.map +1 -1
- package/lib/client.js +22 -2
- package/lib/constants.js +3 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [5.4.2](https://github.com/appium/io.appium.settings/compare/v5.4.1...v5.4.2) (2024-01-10)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Miscellaneous Chores
|
|
5
|
+
|
|
6
|
+
* Add more constants to export ([#137](https://github.com/appium/io.appium.settings/issues/137)) ([1a27223](https://github.com/appium/io.appium.settings/commit/1a27223718db9f7c57fc8cf30def2f4d10321efd))
|
|
7
|
+
|
|
8
|
+
## [5.4.1](https://github.com/appium/io.appium.settings/compare/v5.4.0...v5.4.1) (2024-01-10)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* Update process existence check ([#133](https://github.com/appium/io.appium.settings/issues/133)) ([ea1f8e0](https://github.com/appium/io.appium.settings/commit/ea1f8e0f1dca11adbf4c54052945569a90625bf6))
|
|
14
|
+
|
|
1
15
|
## [5.4.0](https://github.com/appium/io.appium.settings/compare/v5.3.1...v5.4.0) (2024-01-09)
|
|
2
16
|
|
|
3
17
|
|
|
Binary file
|
package/build/lib/client.d.ts
CHANGED
|
@@ -38,6 +38,15 @@ export class SettingsApp {
|
|
|
38
38
|
*/
|
|
39
39
|
shouldRestoreCurrentApp?: boolean | undefined;
|
|
40
40
|
} | undefined): Promise<SettingsApp>;
|
|
41
|
+
/**
|
|
42
|
+
* If the io.appium.settings package has running foreground service.
|
|
43
|
+
* It returns the io.appium.settings's process existence for api level 25 and lower
|
|
44
|
+
* becase the concept of foreground services has only been introduced since API 26
|
|
45
|
+
*
|
|
46
|
+
* @throws {Error} If the method gets an error in the adb shell execution.
|
|
47
|
+
* @returns {Promise<boolean>} Return true if the device Settings app has a servicve running in foreground.
|
|
48
|
+
*/
|
|
49
|
+
isRunningInForeground(): Promise<boolean>;
|
|
41
50
|
/**
|
|
42
51
|
* Parses the output in JSON format retrieved from
|
|
43
52
|
* the corresponding Appium Settings broadcast calls
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../lib/client.js"],"names":[],"mappings":"AAcA;;;GAGG;AAGH;IAOE;;OAEG;IACH,kBAFW,eAAe,EAKzB;IAZD,uCAAuC;IACvC,KADW,OAAO,YAAY,EAAE,GAAG,CAC/B;IAEJ,sCAAsC;IACtC,KADW,OAAO,QAAQ,EAAE,MAAM,CAC9B;IAUJ;;;;;;OAMG;IAEH;;;;;;;OAOG;IACH;;;;;;;;;;;oBAFa,QAAQ,WAAW,CAAC,CA4ChC;IAED;;;;;;;;;;OAUG;IACH,uBAPW,MAAM,cACN,MAAM,OAgChB;IAED,4CAAsC;IAEtC,kCAA4B;IAE5B,sCAAgC;IAChC,sCAAgC;IAChC,wDAAkD;IAElD,8CAAwC;IAExC,4BAAsB;IAEtB,kCAA4B;IAC5B,kCAA4B;IAE5B,0CAAoC;IACpC,8BAAwB;IAExB,gDAA0C;IAC1C,gCAA0B;CAC3B;;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../lib/client.js"],"names":[],"mappings":"AAcA;;;GAGG;AAGH;IAOE;;OAEG;IACH,kBAFW,eAAe,EAKzB;IAZD,uCAAuC;IACvC,KADW,OAAO,YAAY,EAAE,GAAG,CAC/B;IAEJ,sCAAsC;IACtC,KADW,OAAO,QAAQ,EAAE,MAAM,CAC9B;IAUJ;;;;;;OAMG;IAEH;;;;;;;OAOG;IACH;;;;;;;;;;;oBAFa,QAAQ,WAAW,CAAC,CA4ChC;IAED;;;;;;;OAOG;IACH,yBAFa,QAAQ,OAAO,CAAC,CAY5B;IAED;;;;;;;;;;OAUG;IACH,uBAPW,MAAM,cACN,MAAM,OAgChB;IAED,4CAAsC;IAEtC,kCAA4B;IAE5B,sCAAgC;IAChC,sCAAgC;IAChC,wDAAkD;IAElD,8CAAwC;IAExC,4BAAsB;IAEtB,kCAA4B;IAC5B,kCAA4B;IAE5B,0CAAoC;IACpC,8BAAwB;IAExB,gDAA0C;IAC1C,gCAA0B;CAC3B;;SA9Ja,OAAO,YAAY,EAAE,GAAG;;kCAZJ,sBAAsB;6BAC3B,sBAAsB;+BACqB,wBAAwB;+BAAxB,wBAAwB;wCAAxB,wBAAwB;mCAC7D,mBAAmB;0BAC5B,kBAAkB;6BACD,oBAAoB;6BAApB,oBAAoB;iCAC9B,0BAA0B;2BAChC,gBAAgB;oCACM,mBAAmB;4BAAnB,mBAAmB"}
|
package/build/lib/client.js
CHANGED
|
@@ -58,7 +58,7 @@ class SettingsApp {
|
|
|
58
58
|
* @returns {Promise<SettingsApp>} self instance for chaining
|
|
59
59
|
*/
|
|
60
60
|
async requireRunning(opts = {}) {
|
|
61
|
-
if (await this.
|
|
61
|
+
if (await this.isRunningInForeground()) {
|
|
62
62
|
return this;
|
|
63
63
|
}
|
|
64
64
|
this.log.debug(logger_1.LOG_PREFIX, 'Starting Appium Settings app');
|
|
@@ -81,7 +81,7 @@ class SettingsApp {
|
|
|
81
81
|
waitForLaunch: false,
|
|
82
82
|
});
|
|
83
83
|
try {
|
|
84
|
-
await (0, asyncbox_1.waitForCondition)(async () => await this.
|
|
84
|
+
await (0, asyncbox_1.waitForCondition)(async () => await this.isRunningInForeground(), {
|
|
85
85
|
waitMs: timeout,
|
|
86
86
|
intervalMs: 300,
|
|
87
87
|
});
|
|
@@ -99,6 +99,24 @@ class SettingsApp {
|
|
|
99
99
|
throw new Error(`Appium Settings app is not running after ${timeout}ms`);
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* If the io.appium.settings package has running foreground service.
|
|
104
|
+
* It returns the io.appium.settings's process existence for api level 25 and lower
|
|
105
|
+
* becase the concept of foreground services has only been introduced since API 26
|
|
106
|
+
*
|
|
107
|
+
* @throws {Error} If the method gets an error in the adb shell execution.
|
|
108
|
+
* @returns {Promise<boolean>} Return true if the device Settings app has a servicve running in foreground.
|
|
109
|
+
*/
|
|
110
|
+
async isRunningInForeground() {
|
|
111
|
+
if (await this.adb.getApiLevel() < 26) {
|
|
112
|
+
// The foreground service check is available since api level 26
|
|
113
|
+
return await this.adb.processExists(constants_js_1.SETTINGS_HELPER_ID);
|
|
114
|
+
}
|
|
115
|
+
// 'dumpsys activity services <package>' had slightly better performance
|
|
116
|
+
// than 'dumpsys activity services' and parsing the foreground apps.
|
|
117
|
+
const output = await this.adb.shell(['dumpsys', 'activity', 'services', constants_js_1.SETTINGS_HELPER_ID]);
|
|
118
|
+
return output.includes('isForeground=true');
|
|
119
|
+
}
|
|
102
120
|
/**
|
|
103
121
|
* Parses the output in JSON format retrieved from
|
|
104
122
|
* the corresponding Appium Settings broadcast calls
|
package/build/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../lib/client.js"],"names":[],"mappings":";;;;;;AAAA,qCAA2C;AAC3C,oDAAuB;AACvB,uCAA4C;AAC5C,iDAAmF;AACnF,oDAAyD;AACzD,oDAAoD;AACpD,wDAAiG;AACjG,8CAAuD;AACvD,4CAA6C;AAC7C,gDAAgE;AAChE,4DAA4D;AAC5D,wCAA4C;AAC5C,8CAAqE;AAErE;;;GAGG;AAGH,MAAa,WAAW;IAOtB;;OAEG;IACH,YAAa,IAAI;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../lib/client.js"],"names":[],"mappings":"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"}
|
package/build/lib/constants.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export const CLIPBOARD_RECEIVER: "io.appium.settings/.receivers.ClipboardReceive
|
|
|
4
4
|
export const CLIPBOARD_RETRIEVAL_ACTION: "io.appium.settings.clipboard.get";
|
|
5
5
|
export const APPIUM_IME: "io.appium.settings/.AppiumIME";
|
|
6
6
|
export const UNICODE_IME: "io.appium.settings/.UnicodeIME";
|
|
7
|
+
export const EMPTY_IME: "io.appium.settings/.EmptyIME";
|
|
7
8
|
export const WIFI_CONNECTION_SETTING_RECEIVER: "io.appium.settings/.receivers.WiFiConnectionSettingReceiver";
|
|
8
9
|
export const WIFI_CONNECTION_SETTING_ACTION: "io.appium.settings.wifi";
|
|
9
10
|
export const DATA_CONNECTION_SETTING_RECEIVER: "io.appium.settings/.receivers.DataConnectionSettingReceiver";
|
|
@@ -20,4 +21,5 @@ export const SMS_LIST_RECEIVER: "io.appium.settings/.receivers.SmsReader";
|
|
|
20
21
|
export const SMS_LIST_RETRIEVAL_ACTION: "io.appium.settings.sms.read";
|
|
21
22
|
export const MEDIA_SCAN_RECEIVER: "io.appium.settings/.receivers.MediaScannerReceiver";
|
|
22
23
|
export const MEDIA_SCAN_ACTION: "io.appium.settings.scan_media";
|
|
24
|
+
export const SETTING_NOTIFICATIONS_LISTENER_SERVICE: "io.appium.settings/.NLService";
|
|
23
25
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.js"],"names":[],"mappings":"AAAA,sDAAuD;AACvD,wDAAyD;AAEzD,mFAAuF;AACvF,4EAAgF;AAEhF,yDAA6D;AAC7D,2DAA+D;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../lib/constants.js"],"names":[],"mappings":"AAAA,sDAAuD;AACvD,wDAAyD;AAEzD,mFAAuF;AACvF,4EAAgF;AAEhF,yDAA6D;AAC7D,2DAA+D;AAC/D,uDAA2D;AAE3D,6GAAiH;AACjH,uEAA2E;AAC3E,6GAAiH;AACjH,kFAAsF;AAEtF,kGAAsG;AACtG,sEAA0E;AAE1E,4FAAgG;AAChG,gEAAoE;AAEpE,qEAAyE;AACzE,qFAAyF;AACzF,sEAA0E;AAE1E,gFAAoF;AAEpF,0EAA8E;AAC9E,sEAA0E;AAE1E,uFAA2F;AAC3F,gEAAoE;AAEpE,qFAAyF"}
|
package/build/lib/constants.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MEDIA_SCAN_ACTION = exports.MEDIA_SCAN_RECEIVER = exports.SMS_LIST_RETRIEVAL_ACTION = exports.SMS_LIST_RECEIVER = exports.NOTIFICATIONS_RETRIEVAL_ACTION = exports.LOCATION_RETRIEVAL_ACTION = exports.LOCATION_RECEIVER = exports.LOCATION_SERVICE = exports.LOCALE_SETTING_ACTION = exports.LOCALE_SETTING_RECEIVER = exports.ANIMATION_SETTING_ACTION = exports.ANIMATION_SETTING_RECEIVER = exports.DATA_CONNECTION_SETTING_ACTION = exports.DATA_CONNECTION_SETTING_RECEIVER = exports.WIFI_CONNECTION_SETTING_ACTION = exports.WIFI_CONNECTION_SETTING_RECEIVER = exports.UNICODE_IME = exports.APPIUM_IME = exports.CLIPBOARD_RETRIEVAL_ACTION = exports.CLIPBOARD_RECEIVER = exports.SETTINGS_HELPER_MAIN_ACTIVITY = exports.SETTINGS_HELPER_ID = void 0;
|
|
3
|
+
exports.SETTING_NOTIFICATIONS_LISTENER_SERVICE = exports.MEDIA_SCAN_ACTION = exports.MEDIA_SCAN_RECEIVER = exports.SMS_LIST_RETRIEVAL_ACTION = exports.SMS_LIST_RECEIVER = exports.NOTIFICATIONS_RETRIEVAL_ACTION = exports.LOCATION_RETRIEVAL_ACTION = exports.LOCATION_RECEIVER = exports.LOCATION_SERVICE = exports.LOCALE_SETTING_ACTION = exports.LOCALE_SETTING_RECEIVER = exports.ANIMATION_SETTING_ACTION = exports.ANIMATION_SETTING_RECEIVER = exports.DATA_CONNECTION_SETTING_ACTION = exports.DATA_CONNECTION_SETTING_RECEIVER = exports.WIFI_CONNECTION_SETTING_ACTION = exports.WIFI_CONNECTION_SETTING_RECEIVER = exports.EMPTY_IME = exports.UNICODE_IME = exports.APPIUM_IME = exports.CLIPBOARD_RETRIEVAL_ACTION = exports.CLIPBOARD_RECEIVER = exports.SETTINGS_HELPER_MAIN_ACTIVITY = exports.SETTINGS_HELPER_ID = void 0;
|
|
4
4
|
exports.SETTINGS_HELPER_ID = 'io.appium.settings';
|
|
5
5
|
exports.SETTINGS_HELPER_MAIN_ACTIVITY = '.Settings';
|
|
6
6
|
exports.CLIPBOARD_RECEIVER = `${exports.SETTINGS_HELPER_ID}/.receivers.ClipboardReceiver`;
|
|
7
7
|
exports.CLIPBOARD_RETRIEVAL_ACTION = `${exports.SETTINGS_HELPER_ID}.clipboard.get`;
|
|
8
8
|
exports.APPIUM_IME = `${exports.SETTINGS_HELPER_ID}/.AppiumIME`;
|
|
9
9
|
exports.UNICODE_IME = `${exports.SETTINGS_HELPER_ID}/.UnicodeIME`;
|
|
10
|
+
exports.EMPTY_IME = `${exports.SETTINGS_HELPER_ID}/.EmptyIME`;
|
|
10
11
|
exports.WIFI_CONNECTION_SETTING_RECEIVER = `${exports.SETTINGS_HELPER_ID}/.receivers.WiFiConnectionSettingReceiver`;
|
|
11
12
|
exports.WIFI_CONNECTION_SETTING_ACTION = `${exports.SETTINGS_HELPER_ID}.wifi`;
|
|
12
13
|
exports.DATA_CONNECTION_SETTING_RECEIVER = `${exports.SETTINGS_HELPER_ID}/.receivers.DataConnectionSettingReceiver`;
|
|
@@ -23,4 +24,5 @@ exports.SMS_LIST_RECEIVER = `${exports.SETTINGS_HELPER_ID}/.receivers.SmsReader`
|
|
|
23
24
|
exports.SMS_LIST_RETRIEVAL_ACTION = `${exports.SETTINGS_HELPER_ID}.sms.read`;
|
|
24
25
|
exports.MEDIA_SCAN_RECEIVER = `${exports.SETTINGS_HELPER_ID}/.receivers.MediaScannerReceiver`;
|
|
25
26
|
exports.MEDIA_SCAN_ACTION = `${exports.SETTINGS_HELPER_ID}.scan_media`;
|
|
27
|
+
exports.SETTING_NOTIFICATIONS_LISTENER_SERVICE = `${exports.SETTINGS_HELPER_ID}/.NLService`;
|
|
26
28
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.js"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,6BAA6B,GAAG,WAAW,CAAC;AAE5C,QAAA,kBAAkB,GAAG,GAAG,0BAAkB,+BAA+B,CAAC;AAC1E,QAAA,0BAA0B,GAAG,GAAG,0BAAkB,gBAAgB,CAAC;AAEnE,QAAA,UAAU,GAAG,GAAG,0BAAkB,aAAa,CAAC;AAChD,QAAA,WAAW,GAAG,GAAG,0BAAkB,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.js"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,6BAA6B,GAAG,WAAW,CAAC;AAE5C,QAAA,kBAAkB,GAAG,GAAG,0BAAkB,+BAA+B,CAAC;AAC1E,QAAA,0BAA0B,GAAG,GAAG,0BAAkB,gBAAgB,CAAC;AAEnE,QAAA,UAAU,GAAG,GAAG,0BAAkB,aAAa,CAAC;AAChD,QAAA,WAAW,GAAG,GAAG,0BAAkB,cAAc,CAAC;AAClD,QAAA,SAAS,GAAG,GAAG,0BAAkB,YAAY,CAAC;AAE9C,QAAA,gCAAgC,GAAG,GAAG,0BAAkB,2CAA2C,CAAC;AACpG,QAAA,8BAA8B,GAAG,GAAG,0BAAkB,OAAO,CAAC;AAC9D,QAAA,gCAAgC,GAAG,GAAG,0BAAkB,2CAA2C,CAAC;AACpG,QAAA,8BAA8B,GAAG,GAAG,0BAAkB,kBAAkB,CAAC;AAEzE,QAAA,0BAA0B,GAAG,GAAG,0BAAkB,sCAAsC,CAAC;AACzF,QAAA,wBAAwB,GAAG,GAAG,0BAAkB,YAAY,CAAC;AAE7D,QAAA,uBAAuB,GAAG,GAAG,0BAAkB,mCAAmC,CAAC;AACnF,QAAA,qBAAqB,GAAG,GAAG,0BAAkB,SAAS,CAAC;AAEvD,QAAA,gBAAgB,GAAG,GAAG,0BAAkB,mBAAmB,CAAC;AAC5D,QAAA,iBAAiB,GAAG,GAAG,0BAAkB,kCAAkC,CAAC;AAC5E,QAAA,yBAAyB,GAAG,GAAG,0BAAkB,WAAW,CAAC;AAE7D,QAAA,8BAA8B,GAAG,GAAG,0BAAkB,gBAAgB,CAAC;AAEvE,QAAA,iBAAiB,GAAG,GAAG,0BAAkB,uBAAuB,CAAC;AACjE,QAAA,yBAAyB,GAAG,GAAG,0BAAkB,WAAW,CAAC;AAE7D,QAAA,mBAAmB,GAAG,GAAG,0BAAkB,kCAAkC,CAAC;AAC9E,QAAA,iBAAiB,GAAG,GAAG,0BAAkB,aAAa,CAAC;AAEvD,QAAA,sCAAsC,GAAG,GAAG,0BAAkB,aAAa,CAAC"}
|
package/lib/client.js
CHANGED
|
@@ -50,7 +50,7 @@ export class SettingsApp {
|
|
|
50
50
|
* @returns {Promise<SettingsApp>} self instance for chaining
|
|
51
51
|
*/
|
|
52
52
|
async requireRunning (opts = {}) {
|
|
53
|
-
if (await this.
|
|
53
|
+
if (await this.isRunningInForeground()) {
|
|
54
54
|
return this;
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -76,7 +76,7 @@ export class SettingsApp {
|
|
|
76
76
|
waitForLaunch: false,
|
|
77
77
|
});
|
|
78
78
|
try {
|
|
79
|
-
await waitForCondition(async () => await this.
|
|
79
|
+
await waitForCondition(async () => await this.isRunningInForeground(), {
|
|
80
80
|
waitMs: timeout,
|
|
81
81
|
intervalMs: 300,
|
|
82
82
|
});
|
|
@@ -93,6 +93,26 @@ export class SettingsApp {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
/**
|
|
97
|
+
* If the io.appium.settings package has running foreground service.
|
|
98
|
+
* It returns the io.appium.settings's process existence for api level 25 and lower
|
|
99
|
+
* becase the concept of foreground services has only been introduced since API 26
|
|
100
|
+
*
|
|
101
|
+
* @throws {Error} If the method gets an error in the adb shell execution.
|
|
102
|
+
* @returns {Promise<boolean>} Return true if the device Settings app has a servicve running in foreground.
|
|
103
|
+
*/
|
|
104
|
+
async isRunningInForeground () {
|
|
105
|
+
if (await this.adb.getApiLevel() < 26) {
|
|
106
|
+
// The foreground service check is available since api level 26
|
|
107
|
+
return await this.adb.processExists(SETTINGS_HELPER_ID);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// 'dumpsys activity services <package>' had slightly better performance
|
|
111
|
+
// than 'dumpsys activity services' and parsing the foreground apps.
|
|
112
|
+
const output = await this.adb.shell(['dumpsys', 'activity', 'services', SETTINGS_HELPER_ID]);
|
|
113
|
+
return output.includes('isForeground=true');
|
|
114
|
+
}
|
|
115
|
+
|
|
96
116
|
/**
|
|
97
117
|
* Parses the output in JSON format retrieved from
|
|
98
118
|
* the corresponding Appium Settings broadcast calls
|
package/lib/constants.js
CHANGED
|
@@ -6,6 +6,7 @@ export const CLIPBOARD_RETRIEVAL_ACTION = `${SETTINGS_HELPER_ID}.clipboard.get`;
|
|
|
6
6
|
|
|
7
7
|
export const APPIUM_IME = `${SETTINGS_HELPER_ID}/.AppiumIME`;
|
|
8
8
|
export const UNICODE_IME = `${SETTINGS_HELPER_ID}/.UnicodeIME`;
|
|
9
|
+
export const EMPTY_IME = `${SETTINGS_HELPER_ID}/.EmptyIME`;
|
|
9
10
|
|
|
10
11
|
export const WIFI_CONNECTION_SETTING_RECEIVER = `${SETTINGS_HELPER_ID}/.receivers.WiFiConnectionSettingReceiver`;
|
|
11
12
|
export const WIFI_CONNECTION_SETTING_ACTION = `${SETTINGS_HELPER_ID}.wifi`;
|
|
@@ -29,3 +30,5 @@ export const SMS_LIST_RETRIEVAL_ACTION = `${SETTINGS_HELPER_ID}.sms.read`;
|
|
|
29
30
|
|
|
30
31
|
export const MEDIA_SCAN_RECEIVER = `${SETTINGS_HELPER_ID}/.receivers.MediaScannerReceiver`;
|
|
31
32
|
export const MEDIA_SCAN_ACTION = `${SETTINGS_HELPER_ID}.scan_media`;
|
|
33
|
+
|
|
34
|
+
export const SETTING_NOTIFICATIONS_LISTENER_SERVICE = `${SETTINGS_HELPER_ID}/.NLService`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "io.appium.settings",
|
|
3
|
-
"version": "5.4.
|
|
3
|
+
"version": "5.4.2",
|
|
4
4
|
"description": "App for dealing with Android settings",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"teen_process": "^2.0.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
+
"@appium/test-support": "^3.0.1",
|
|
56
57
|
"@appium/eslint-config-appium": "^8.0.4",
|
|
57
58
|
"@appium/eslint-config-appium-ts": "^0.x",
|
|
58
59
|
"@appium/tsconfig": "^0.x",
|