device_api-android 1.1.5 → 1.2.0
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.
- checksums.yaml +4 -4
- data/lib/device_api/android.rb +9 -5
- data/lib/device_api/android/adb.rb +31 -3
- data/lib/device_api/android/device.rb +15 -2
- data/lib/device_api/android/device/samsung.rb +18 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dfe569584ed7b09ceb48bb274a0c974798f10f6
|
4
|
+
data.tar.gz: 8269d27b46ae49ff8bf354f06dfa8abb8bc713ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95d0ded27c12b01421de3d766a7373ef79d18effc903ae420a5091e81af378fed9a7ef845998db7d25496826c7d8f5d9e4d2a7b22fb85ee4481185c90eb9d3de
|
7
|
+
data.tar.gz: 4ae9c1c9b96d4df37ad18cbb41ef01344e47204baf03c92cbeab6231f5b9aa60356d7eb53c34e8e21cfedd8dabff876dfe3fd91d9b9c8f3993298643e51617cd
|
data/lib/device_api/android.rb
CHANGED
@@ -10,6 +10,7 @@ require 'device_api/android/plugins/disk'
|
|
10
10
|
|
11
11
|
# Load additional device types
|
12
12
|
require 'device_api/android/device/kindle'
|
13
|
+
require 'device_api/android/device/samsung'
|
13
14
|
|
14
15
|
module DeviceAPI
|
15
16
|
module Android
|
@@ -17,7 +18,7 @@ module DeviceAPI
|
|
17
18
|
def self.devices
|
18
19
|
ADB.devices.map do |d|
|
19
20
|
if d.keys.first && !d.keys.first.include?('?')
|
20
|
-
DeviceAPI::Android::Device.create( self.get_device_type(d
|
21
|
+
DeviceAPI::Android::Device.create( self.get_device_type(d), { serial: d.keys.first, state: d.values.first } )
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
@@ -28,15 +29,18 @@ module DeviceAPI
|
|
28
29
|
raise DeviceAPI::BadSerialString.new("serial was '#{serial.nil? ? 'nil' : serial}'")
|
29
30
|
end
|
30
31
|
state = ADB.get_state(serial)
|
31
|
-
DeviceAPI::Android::Device.create( self.get_device_type(serial), { serial: serial, state: state })
|
32
|
+
DeviceAPI::Android::Device.create( self.get_device_type({ "#{serial}": state}), { serial: serial, state: state })
|
32
33
|
end
|
33
34
|
|
34
35
|
# Return the device type used in determining which Device Object to create
|
35
|
-
def self.get_device_type(
|
36
|
-
return :default if
|
37
|
-
|
36
|
+
def self.get_device_type(options)
|
37
|
+
return :default if options.values.first == 'unauthorized'
|
38
|
+
return :default if Device.new(serial: options.keys.first, state: options.values.first).manufacturer.nil?
|
39
|
+
case Device.new(serial: options.keys.first).manufacturer.downcase
|
38
40
|
when 'amazon'
|
39
41
|
type = :kindle
|
42
|
+
when 'samsung'
|
43
|
+
type = :samsung
|
40
44
|
else
|
41
45
|
type = :default
|
42
46
|
end
|
@@ -42,7 +42,7 @@ module DeviceAPI
|
|
42
42
|
|
43
43
|
raise ADBCommandError.new(result.stderr) if result.exit != 0
|
44
44
|
|
45
|
-
lines = result.stdout.encode('UTF-8', invalid: :replace).split("\n")
|
45
|
+
lines = result.stdout.encode('UTF-16', 'UTF-8', invalid: :replace, replace: '').encode('UTF-8', 'UTF-16').split("\n")
|
46
46
|
|
47
47
|
process_dumpsys('\[(.*)\]:\s+\[(.*)\]', lines)
|
48
48
|
end
|
@@ -263,12 +263,40 @@ module DeviceAPI
|
|
263
263
|
# @param serial serial number of device
|
264
264
|
# @param command -option activity
|
265
265
|
# @example
|
266
|
-
# DeviceAPI::ADB.am(serial, "-a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings")
|
266
|
+
# DeviceAPI::ADB.am(serial, "start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings")
|
267
267
|
def self.am(serial, command)
|
268
|
-
result = execute("adb -s #{serial} shell am
|
268
|
+
result = execute("adb -s #{serial} shell am #{command}")
|
269
269
|
raise ADBCommandError.new(result.stderr) if result.exit != 0
|
270
270
|
return result.stdout
|
271
271
|
end
|
272
|
+
|
273
|
+
# Package manager commands
|
274
|
+
# @param serial serial of device
|
275
|
+
# @param command command to issue to the package manager
|
276
|
+
# @example DeviceAPI::ADB.pm(serial, 'list packages')
|
277
|
+
def self.pm(serial, command)
|
278
|
+
result = execute("adb -s #{serial} shell pm #{command}")
|
279
|
+
raise ADBCommandError.new(result.stderr) if result.exit != 0
|
280
|
+
return result.stdout
|
281
|
+
end
|
282
|
+
|
283
|
+
# Blocks a package, used on Android versions less than KitKat
|
284
|
+
# Returns boolean
|
285
|
+
# @param serial serial of device
|
286
|
+
# @param package to block
|
287
|
+
def self.block_package(serial, package)
|
288
|
+
result = pm(serial, "block #{package}")
|
289
|
+
result.include?('true')
|
290
|
+
end
|
291
|
+
|
292
|
+
# Blocks a package on KitKat and above
|
293
|
+
# Returns boolean
|
294
|
+
# @param serial serial of device
|
295
|
+
# @param package to hide
|
296
|
+
def self.hide_package(serial, package)
|
297
|
+
result = pm(serial, "hide #{package}")
|
298
|
+
result.include?('true')
|
299
|
+
end
|
272
300
|
end
|
273
301
|
|
274
302
|
# ADB Error class
|
@@ -86,6 +86,14 @@ module DeviceAPI
|
|
86
86
|
!get_battery_info.select { |keys| keys.include?('powered')}.select { |_,v| v == 'true' }.empty?
|
87
87
|
end
|
88
88
|
|
89
|
+
def block_package(package)
|
90
|
+
if version < "5.0.0"
|
91
|
+
ADB.block_package(serial, package)
|
92
|
+
else
|
93
|
+
ADB.hide_package(serial, package)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
89
97
|
# Return the device orientation
|
90
98
|
# @return (String) current device orientation
|
91
99
|
def orientation
|
@@ -141,6 +149,11 @@ module DeviceAPI
|
|
141
149
|
result
|
142
150
|
end
|
143
151
|
|
152
|
+
def list_installed_packages
|
153
|
+
packages = ADB.pm(serial, 'list packages')
|
154
|
+
packages.split("\r\n")
|
155
|
+
end
|
156
|
+
|
144
157
|
# Return the app version number for a specified apk
|
145
158
|
# @param [String] apk string containing path to the apk
|
146
159
|
# @return [String, Exception] app version number if it can be found, otherwise an error is raised
|
@@ -220,8 +233,8 @@ module DeviceAPI
|
|
220
233
|
# @param [String] command to start the intent
|
221
234
|
# Return the stdout of executed intent
|
222
235
|
# @return [String] stdout
|
223
|
-
def
|
224
|
-
ADB.am(serial,command)
|
236
|
+
def intent(command)
|
237
|
+
ADB.am(serial, command)
|
225
238
|
end
|
226
239
|
|
227
240
|
#Reboots the device
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module DeviceAPI
|
2
|
+
module Android
|
3
|
+
# Samsung specific device class
|
4
|
+
class Samsung < Device
|
5
|
+
def initialize(options = {})
|
6
|
+
|
7
|
+
super
|
8
|
+
packages = list_installed_packages
|
9
|
+
multi_window = 'com.sec.android.app.FlashBarService'
|
10
|
+
if packages.include?("package:#{multi_window}")
|
11
|
+
# Stop the multi window function from running and block it
|
12
|
+
intent("force-stop #{multi_window}")
|
13
|
+
block_package("#{multi_window}")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: device_api-android
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Buckhurst
|
8
8
|
- Jitesh Gosai
|
9
|
+
- Asim Khan
|
9
10
|
- Jon Wilson
|
10
11
|
autorequire:
|
11
12
|
bindir: bin
|
12
13
|
cert_chain: []
|
13
|
-
date: 2015-10-
|
14
|
+
date: 2015-10-19 00:00:00.000000000 Z
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: device_api
|
@@ -58,6 +59,7 @@ files:
|
|
58
59
|
- lib/device_api/android/adb.rb
|
59
60
|
- lib/device_api/android/device.rb
|
60
61
|
- lib/device_api/android/device/kindle.rb
|
62
|
+
- lib/device_api/android/device/samsung.rb
|
61
63
|
- lib/device_api/android/plugins/battery.rb
|
62
64
|
- lib/device_api/android/plugins/disk.rb
|
63
65
|
- lib/device_api/android/plugins/memory.rb
|