rhodes 7.5.1 → 7.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (180) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +319 -0
  3. data/README.md +3 -15
  4. data/Rakefile +3 -0
  5. data/appveyor.yml +37 -32
  6. data/azure-pipelines.yml +1 -1
  7. data/bin/rhodes-setup +22 -8
  8. data/extensions/emdk3-manager/ext/platform/android/src/com/rho/emdk3/EMDK3Extension.java +14 -5
  9. data/extensions/instrumentation/ext/platform/android/src/com/rho/instrumentation/Instrumentation.java +29 -15
  10. data/extensions/rhoconnect-push/ext/rhoconnect-push/platform/android/src/com/rhomobile/rhoelements/ans/ANSManager.java +1 -1
  11. data/extensions/rhoelementsext/ext/rhoelementsext/platform/android/rhoelements_temp/src/com/rho/rhoelements/ElementsCore.java +12 -9
  12. data/extensions/rhoelementsext/ext/rhoelementsext/platform/android/rhoelements_temp/src/com/rho/rhoelements/graphics/BatteryIndicator.java +2 -2
  13. data/lib/commonAPI/barcode/ext/platform/qt/Barcode.pro +1 -1
  14. data/lib/commonAPI/barcode/ext/platform/qt/Barcode.pro.erb +2 -2
  15. data/lib/commonAPI/barcode/ext/platform/qt/src/qzxing/QZXing.pri +9 -21
  16. data/lib/commonAPI/barcode/ext.yml +1 -0
  17. data/lib/commonAPI/bluetooth/ext/platform/qt/Bluetooth.pro +1 -1
  18. data/lib/commonAPI/bluetooth/ext/platform/qt/Bluetooth.pro.erb +1 -1
  19. data/lib/commonAPI/bluetooth/ext/platform/qt/src/bluetooth/bluetoothhelper.h +1 -1
  20. data/lib/commonAPI/coreapi/RhoSystemApi.rb +6 -0
  21. data/lib/commonAPI/coreapi/ext/Intent.xml +4 -0
  22. data/lib/commonAPI/coreapi/ext/platform/android/src/com/rho/intent/IntentSingleton.java +6 -0
  23. data/lib/commonAPI/coreapi/ext/platform/android/src/com/rho/notification/Notification.java +2 -1
  24. data/lib/commonAPI/coreapi/ext/platform/android/src/com/rho/notification/NotificationScheduler.java +1 -1
  25. data/lib/commonAPI/coreapi/ext/platform/android/src/com/rho/webview/WebViewSingleton.java +40 -27
  26. data/lib/commonAPI/coreapi/ext/platform/iphone/cpp_based_impl/SystemImpl.mm +5 -6
  27. data/lib/commonAPI/coreapi/ext/platform/iphone/impl/Intent.h +1 -1
  28. data/lib/commonAPI/coreapi/ext/platform/iphone/impl/Intent.m +3 -1
  29. data/lib/commonAPI/coreapi/ext/platform/iphone/impl/NotificationSingleton.h +2 -1
  30. data/lib/commonAPI/coreapi/ext/platform/iphone/impl/NotificationSingleton.m +10 -0
  31. data/lib/commonAPI/coreapi/ext/platform/wm/src/IntentImpl.cpp +3 -0
  32. data/lib/commonAPI/coreapi/ext/shared/SystemImplBase.cpp +13 -0
  33. data/lib/commonAPI/coreapi/ext/shared/SystemImplBase.h +2 -0
  34. data/lib/commonAPI/coreapi/ext/system.xml +3 -0
  35. data/lib/commonAPI/mediacapture/ext/platform/android/ApplicationCameraActivity.erb +2 -2
  36. data/lib/commonAPI/mediacapture/ext/platform/android/ApplicationFileProvider.erb +1 -1
  37. data/lib/commonAPI/mediacapture/ext/platform/android/ext_java.files +1 -0
  38. data/lib/commonAPI/mediacapture/ext/platform/android/src/com/rho/camera/CameraObject.java +8 -4
  39. data/lib/commonAPI/mediacapture/ext/platform/android/src/com/rho/camera/CameraRhoListener.java +8 -0
  40. data/lib/commonAPI/mediacapture/ext/platform/android/src/com/rho/mediacapture/RhoCameraFileProvider.java +6 -0
  41. data/lib/commonAPI/mediacapture/ext/platform/qt/MediaCapture.pro.erb +1 -1
  42. data/lib/commonAPI/mediacapture/ext/platform/qt/Mediacapture.pro +1 -1
  43. data/lib/commonAPI/signature/ext/platform/iphone/impl/readme.txt +7 -0
  44. data/lib/commonAPI/signature/ext/platform/qt/Signature.pro +3 -10
  45. data/lib/commonAPI/signature/ext/platform/qt/Signature.pro.erb +2 -2
  46. data/lib/extensions/fcm-push/ext/iphone/Podfile +15 -2
  47. data/lib/extensions/fcm-push/ext/iphone/fcm-push.xcodeproj/project.pbxproj +6 -7
  48. data/lib/extensions/nfc/ext/platform/android/src/com/rhomobile/nfc/Nfc.java +2 -1
  49. data/lib/extensions/serialport/ext/serialport.pro +1 -1
  50. data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +1 -0
  51. data/platform/android/Rhodes/jni/src/fileapi.cpp +4 -0
  52. data/platform/android/Rhodes/res/drawable/baseline_check_24.xml +5 -0
  53. data/platform/android/Rhodes/res/drawable/baseline_check_240.xml +5 -0
  54. data/platform/android/Rhodes/res/drawable/baseline_close_24.xml +5 -0
  55. data/platform/android/Rhodes/res/drawable/baseline_close_240.xml +5 -0
  56. data/platform/android/Rhodes/res/layout/overlay_layout.xml +39 -0
  57. data/platform/android/Rhodes/res/layout/perrmission_alert_dialog.xml +267 -0
  58. data/platform/android/Rhodes/src/com/rhomobile/rhodes/BaseActivity.java +183 -66
  59. data/platform/android/Rhodes/src/com/rhomobile/rhodes/LocalFileProvider.java +38 -6
  60. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhoFileProvider.java +32 -0
  61. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +529 -89
  62. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesApplication.java +26 -4
  63. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +256 -160
  64. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/AbstractRhoExtension.java +14 -3
  65. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/IRhoExtManager.java +4 -0
  66. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/IRhoExtension.java +5 -4
  67. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/RhoExtManagerImpl.java +79 -38
  68. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java +6 -1
  69. data/platform/android/Rhodes/src/com/rhomobile/rhodes/kioskservices/CallReceiver.java +22 -0
  70. data/platform/android/Rhodes/src/com/rhomobile/rhodes/kioskservices/IKioskMode.java +11 -0
  71. data/platform/android/Rhodes/src/com/rhomobile/rhodes/kioskservices/KioskManager.java +18 -0
  72. data/platform/android/Rhodes/src/com/rhomobile/rhodes/kioskservices/MyAccessibilityService.java +230 -0
  73. data/platform/android/Rhodes/src/com/rhomobile/rhodes/kioskservices/MyNotificationListenerService.java +16 -0
  74. data/platform/android/Rhodes/src/com/rhomobile/rhodes/kioskservices/MyOverlayService.java +197 -0
  75. data/platform/android/Rhodes/src/com/rhomobile/rhodes/kioskservices/PermissionManager.java +232 -0
  76. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +34 -8
  77. data/platform/android/Rhodes/src/com/rhomobile/rhodes/permissioncheck/CheckDrawable.java +53 -0
  78. data/platform/android/Rhodes/src/com/rhomobile/rhodes/permissioncheck/PermissionListGenerate.java +366 -0
  79. data/platform/android/Rhodes/src/com/rhomobile/rhodes/rhodes.iml +11 -0
  80. data/platform/android/Rhodes/src/com/rhomobile/rhodes/socket/SSLImpl.java +1 -0
  81. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/GoogleWebView.java +782 -41
  82. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoInputConnectionWrapper.java +146 -0
  83. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoInputListener.java +21 -0
  84. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebViewClient.java +92 -32
  85. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/TauWebViewOptions.java +118 -0
  86. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/WebSettingsProviderBase.java +18 -17
  87. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/WebSettingsProviderEclairMR1.java +4 -4
  88. data/platform/android/build/RhodesSRC_build.files +13 -0
  89. data/platform/android/build/android-repack.rake +8 -1
  90. data/platform/android/build/android.rake +118 -51
  91. data/platform/android/build/android_tools.rb +1 -1
  92. data/platform/android/build/androidcommon.rb +13 -7
  93. data/platform/android/build/config.yml +4 -1
  94. data/platform/android/build/manifest_generator.rb +14 -10
  95. data/platform/android/build/maven_deps_extractor.rb +7 -1
  96. data/platform/android/build/ndkwrapper.rb +12 -0
  97. data/platform/android/proguard/proguard-base-rules.pro +5 -0
  98. data/platform/android/proguard/proguard.jar +0 -0
  99. data/platform/iphone/Classes/RhoAppBaseLib-Bridging-Header.h +4 -0
  100. data/platform/iphone/Classes/RhoAppBaseStandaloneLib-Bridging-Header.h +4 -0
  101. data/platform/iphone/Classes/RhoCryptAESGCM.swift +105 -0
  102. data/platform/iphone/Classes/RhoUIWebView.h +1 -1
  103. data/platform/iphone/Classes/RhoUIWebView.m +1 -1
  104. data/platform/iphone/Classes/RhoWKWebView.h +1 -1
  105. data/platform/iphone/Classes/RhoWKWebView.mm +32 -4
  106. data/platform/iphone/Classes/RhoWebView.h +1 -1
  107. data/platform/iphone/Classes/RhoWebViewFabrique.m +7 -1
  108. data/platform/iphone/Classes/SimpleMainView.m +5 -5
  109. data/platform/iphone/Classes/URLProtocol/CRhoURLProtocol.m +21 -10
  110. data/platform/iphone/Classes/rho/net/IPhoneNetRequest.mm +4 -0
  111. data/platform/iphone/Framework/RhoApplication/RhoApplication.xcodeproj/project.pbxproj +1 -1
  112. data/platform/iphone/Framework/Rhodes/Rhodes.xcodeproj/project.pbxproj +1 -1
  113. data/platform/iphone/RhoAppBaseLib/RhoAppBaseLib.xcodeproj/project.pbxproj +46 -1
  114. data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +1 -1
  115. data/platform/iphone/curl/curl.xcodeproj/project.pbxproj +4 -1
  116. data/platform/iphone/rbuild/iphone.rake +9 -8
  117. data/platform/iphone/rhoextlib/rhoextlib.xcodeproj/project.pbxproj +4 -1
  118. data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +1 -1
  119. data/platform/iphone/rhosynclib/rhosynclib.xcodeproj/project.pbxproj +1 -1
  120. data/platform/osx/bin/RhoSimulator/RhoSimulator.app.zip +0 -0
  121. data/platform/sailfish/build/{harbour-SailfishRhodes.pro.erb → SailfishRhodes.pro.erb} +10 -17
  122. data/platform/sailfish/build/rhodes.pro.erb +7 -17
  123. data/platform/sailfish/build/rpm/SailfishRhodes.desktop.erb +12 -0
  124. data/platform/sailfish/build/rpm/SailfishRhodes.erb +2 -0
  125. data/platform/sailfish/build/rpm/SailfishRhodes.spec.erb +43 -0
  126. data/platform/sailfish/build/rubylib.pro.erb +29 -29
  127. data/platform/sailfish/build/sailfish.rake +188 -180
  128. data/platform/sailfish/keys/regular_cert.pem +14 -0
  129. data/platform/sailfish/keys/regular_key.pem +4 -0
  130. data/platform/shared/common/RhodesApp.cpp +33 -9
  131. data/platform/shared/common/iphone/RhoCryptImpl.mm +130 -54
  132. data/platform/shared/qt/RhoSimulator.pro +1 -1
  133. data/platform/shared/qt/rhodes/rhodes.pro +4 -11
  134. data/platform/shared/qt/sailfish/SailfishRhodes.desktop +3 -4
  135. data/platform/shared/qt/sailfish/SailfishRhodes.pro +9 -10
  136. data/platform/shared/qt/sailfish/icons/108x108/108x108.png +0 -0
  137. data/platform/shared/qt/sailfish/privileges/sailfishrhodes +2 -0
  138. data/platform/shared/qt/sailfish/qml/pages/FirstPageWK.qml +7 -11
  139. data/platform/shared/qt/sailfish/qml/{harbour-sailfishrhodes.qml → sailfishrhodes.qml} +1 -1
  140. data/platform/shared/qt/sailfish/rpm/sailfishrhodes.spec +80 -0
  141. data/platform/shared/qt/sailfish/rpm/{harbour-sailfishrhodes.yaml → sailfishrhodes.yaml} +2 -2
  142. data/platform/shared/qt/sailfish/src/QtMainWindow.cpp +1 -1
  143. data/platform/shared/qt/sailfish/src/QtMainWindow.h +1 -1
  144. data/platform/shared/qt/sailfish/src/main.cpp +6 -38
  145. data/platform/shared/qt/sailfish/src/rootdelegate.h +2 -14
  146. data/platform/shared/ruby/aurora/ruby/config.h +386 -0
  147. data/platform/shared/ruby/aurora/ruby/constdefs.c +5866 -0
  148. data/platform/shared/ruby/aurora/ruby/constdefs.h +1788 -0
  149. data/platform/shared/sqlite/crypto.c +14 -0
  150. data/platform/win32/RhoSimulator/RhoSimulator.exe +0 -0
  151. data/platform/win32/build/rhodes.nsi +3 -3
  152. data/platform/win32/build/win32.rake +1 -1
  153. data/rakefile.rb +3 -0
  154. data/res/build-tools/iphonesim/build/Release/iphonesim_8 +4 -4
  155. data/res/generators/templates/application/AndroidManifest.erb +26 -5
  156. data/res/generators/templates/application/build.yml +14 -10
  157. data/res/generators/templates/application/resources/android/res/xml/provider_paths.xml +4 -0
  158. data/res/generators/templates/application/rhoconfig.txt +10 -1
  159. data/res/generators/templates/iphone_project/Bremen8.xcodeproj/project.pbxproj +24 -1
  160. data/res/generators/templates/iphone_project/Classes/SimpleSwiftClass.swift +20 -0
  161. data/res/generators/templates/iphone_project/Classes/rhorunner-Bridging-Header.h +4 -0
  162. data/rhobuild.yml.example +3 -3
  163. data/rhodes.gemspec +4 -2
  164. data/version +1 -1
  165. metadata +81 -26
  166. data/platform/sailfish/build/rho_build.cmd.erb +0 -14
  167. data/platform/sailfish/build/rho_clean.cmd.erb +0 -14
  168. data/platform/sailfish/build/rho_deploy.cmd.erb +0 -15
  169. data/platform/sailfish/build/rho_rpm.cmd.erb +0 -14
  170. data/platform/sailfish/build/rho_rpmvalidation.cmd.erb +0 -14
  171. data/platform/sailfish/build/rpm/harbour-SailfishRhodes.desktop.erb +0 -7
  172. data/platform/sailfish/build/rpm/harbour-SailfishRhodes.erb +0 -2
  173. data/platform/sailfish/build/rpm/harbour-SailfishRhodes.yaml.erb +0 -37
  174. data/platform/shared/qt/sailfish/harbour-sailfishrhodes.desktop +0 -6
  175. data/platform/shared/qt/sailfish/icons/108x108/harbour-sailfishrhodes.png +0 -0
  176. data/platform/shared/qt/sailfish/privileges/harbour-sailfishrhodes +0 -2
  177. data/platform/shared/qt/sailfish/qml/pages/FirstPageWE.qml +0 -236
  178. /data/platform/shared/qt/sailfish/icons/128x128/{harbour-sailfishrhodes.png → sailfishrhodes.png} +0 -0
  179. /data/platform/shared/qt/sailfish/icons/172x172/{harbour-sailfishrhodes.png → sailfishrhodes.png} +0 -0
  180. /data/platform/shared/qt/sailfish/icons/86x86/{harbour-sailfishrhodes.png → sailfishrhodes.png} +0 -0
@@ -0,0 +1,267 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <LinearLayout
3
+ xmlns:android="http://schemas.android.com/apk/res/android"
4
+ xmlns:app="http://schemas.android.com/apk/res-auto"
5
+ xmlns:tools="http://schemas.android.com/tools"
6
+ android:layout_width="match_parent"
7
+ android:layout_height="wrap_content"
8
+ android:orientation="vertical"
9
+ android:background="#FFFFFFFF">
10
+
11
+ <TextView
12
+ android:layout_width="wrap_content"
13
+ android:layout_height="match_parent"
14
+ android:textSize="23sp"
15
+ android:text="Tau browser requires some additional permissions in order to make its job properly:"/>
16
+ <View
17
+ android:layout_width="match_parent"
18
+ android:layout_height="20dp"/>
19
+
20
+ <ScrollView
21
+ android:layout_width="match_parent"
22
+ android:layout_height="match_parent">
23
+ <LinearLayout
24
+ android:layout_width="match_parent"
25
+ android:layout_height="wrap_content"
26
+ android:orientation="vertical">
27
+ <LinearLayout
28
+ android:minHeight = "48dip"
29
+ android:minWidth = "88dip"
30
+ android:layout_width="match_parent"
31
+ android:layout_height="wrap_content"
32
+ android:background="#F3F3F3"
33
+ android:layout_margin="3dp"
34
+ android:orientation="horizontal">
35
+
36
+ <TextView
37
+ android:layout_width="wrap_content"
38
+ android:layout_height="wrap_content"
39
+ android:text="Accessibility Services"
40
+ android:textSize="20sp"
41
+ android:layout_gravity="center"
42
+ android:layout_marginLeft="10dp"/>
43
+
44
+ <View
45
+ android:layout_width="0dp"
46
+ android:layout_height="0dp"
47
+ android:layout_weight="1"/>
48
+
49
+ <Button
50
+ android:id="@+id/accessibilityServiceBtn"
51
+ android:layout_width="130dp"
52
+ android:layout_height="40dp"
53
+ android:layout_gravity="center"
54
+ android:background="#5CD9FF"
55
+ android:gravity="center"
56
+ android:text="Settings ..."
57
+ android:textColor="#FFFFFF"
58
+ android:textSize="15sp"
59
+ android:layout_marginRight="3dp"
60
+ android:visibility="visible"/>
61
+
62
+ <ImageView
63
+ android:id="@+id/accessibilityServiceStatus"
64
+ android:layout_width="wrap_content"
65
+ android:layout_marginRight="10dp"
66
+ android:layout_gravity="center"
67
+ android:layout_height="wrap_content"
68
+ android:src="@drawable/baseline_check_24"
69
+ android:visibility="gone"/>
70
+ </LinearLayout>
71
+
72
+ <LinearLayout
73
+ android:minHeight = "48dip"
74
+ android:minWidth = "88dip"
75
+ android:layout_width="match_parent"
76
+ android:layout_height="wrap_content"
77
+ android:background="#F3F3F3"
78
+ android:layout_margin="3dp"
79
+ android:orientation="horizontal">
80
+
81
+ <TextView
82
+ android:layout_width="wrap_content"
83
+ android:layout_height="wrap_content"
84
+ android:text="Notification Service"
85
+ android:textSize="20sp"
86
+ android:layout_gravity="center"
87
+ android:layout_marginLeft="10dp"/>
88
+
89
+ <View
90
+ android:layout_width="0dp"
91
+ android:layout_height="0dp"
92
+ android:layout_weight="1"/>
93
+
94
+ <Button
95
+ android:id="@+id/notificationServiceBtn"
96
+ android:layout_width="130dp"
97
+ android:layout_height="40dp"
98
+ android:layout_gravity="center"
99
+ android:background="#5CD9FF"
100
+ android:gravity="center"
101
+ android:text="Settings ..."
102
+ android:textColor="#FFFFFF"
103
+ android:textSize="15sp"
104
+ android:layout_marginRight="3dp"
105
+ android:visibility="visible"/>
106
+
107
+ <ImageView
108
+ android:id="@+id/notificationServiceStatus"
109
+ android:layout_width="wrap_content"
110
+ android:layout_marginRight="10dp"
111
+ android:layout_gravity="center"
112
+ android:layout_height="wrap_content"
113
+ android:src="@drawable/baseline_check_24"
114
+ android:visibility="gone"/>
115
+ </LinearLayout>
116
+
117
+ <LinearLayout
118
+ android:minHeight = "48dip"
119
+ android:minWidth = "88dip"
120
+ android:layout_width="match_parent"
121
+ android:layout_height="wrap_content"
122
+ android:background="#F3F3F3"
123
+ android:layout_margin="3dp"
124
+ android:orientation="horizontal">
125
+
126
+ <TextView
127
+ android:layout_width="wrap_content"
128
+ android:layout_height="wrap_content"
129
+ android:text="Default Launcher"
130
+ android:textSize="20sp"
131
+ android:layout_gravity="center"
132
+ android:layout_marginLeft="10dp"/>
133
+
134
+ <View
135
+ android:layout_width="0dp"
136
+ android:layout_height="0dp"
137
+ android:layout_weight="1"/>
138
+
139
+ <Button
140
+ android:id="@+id/defaultLauncherBtn"
141
+ android:layout_width="130dp"
142
+ android:layout_height="40dp"
143
+ android:layout_gravity="center"
144
+ android:background="#5CD9FF"
145
+ android:gravity="center"
146
+ android:text="Settings ..."
147
+ android:textColor="#FFFFFF"
148
+ android:textSize="15sp"
149
+ android:layout_marginRight="3dp"
150
+ android:visibility="visible"/>
151
+
152
+ <ImageView
153
+ android:id="@+id/defaultLauncherStatus"
154
+ android:layout_width="wrap_content"
155
+ android:layout_marginRight="10dp"
156
+ android:layout_gravity="center"
157
+ android:layout_height="wrap_content"
158
+ android:src="@drawable/baseline_check_24"
159
+ android:visibility="gone"/>
160
+ </LinearLayout>
161
+
162
+ <LinearLayout
163
+ android:id="@+id/callPhoneLinearLayout"
164
+ android:minHeight = "48dip"
165
+ android:minWidth = "88dip"
166
+ android:layout_width="match_parent"
167
+ android:layout_height="wrap_content"
168
+ android:background="#F3F3F3"
169
+ android:layout_margin="3dp"
170
+ android:orientation="horizontal">
171
+
172
+ <TextView
173
+ android:layout_width="wrap_content"
174
+ android:layout_height="wrap_content"
175
+ android:text="Call Phone"
176
+ android:textSize="20sp"
177
+ android:layout_gravity="center"
178
+ android:layout_marginLeft="10dp"/>
179
+
180
+ <View
181
+ android:layout_width="0dp"
182
+ android:layout_height="0dp"
183
+ android:layout_weight="1"/>
184
+
185
+ <Button
186
+ android:id="@+id/callPhoneBtn"
187
+ android:layout_width="130dp"
188
+ android:layout_height="40dp"
189
+ android:layout_gravity="center"
190
+ android:background="#5CD9FF"
191
+ android:gravity="center"
192
+ android:text="Settings ..."
193
+ android:textColor="#FFFFFF"
194
+ android:textSize="15sp"
195
+ android:layout_marginRight="3dp"
196
+ android:visibility="visible"/>
197
+
198
+ <ImageView
199
+ android:id="@+id/callPhoneStatus"
200
+ android:layout_width="wrap_content"
201
+ android:layout_marginRight="10dp"
202
+ android:layout_gravity="center"
203
+ android:layout_height="wrap_content"
204
+ android:src="@drawable/baseline_check_24"
205
+ android:visibility="gone"/>
206
+ </LinearLayout>
207
+
208
+ <LinearLayout
209
+ android:minHeight = "48dip"
210
+ android:minWidth = "88dip"
211
+ android:layout_width="match_parent"
212
+ android:layout_height="wrap_content"
213
+ android:background="#F3F3F3"
214
+ android:layout_margin="3dp"
215
+ android:orientation="horizontal">
216
+
217
+ <TextView
218
+ android:layout_width="wrap_content"
219
+ android:layout_height="wrap_content"
220
+ android:text="Overlay Service"
221
+ android:textSize="20sp"
222
+ android:layout_gravity="center"
223
+ android:layout_marginLeft="10dp"/>
224
+
225
+ <View
226
+ android:layout_width="0dp"
227
+ android:layout_height="0dp"
228
+ android:layout_weight="1"/>
229
+
230
+ <Button
231
+ android:id="@+id/overlayServiceBtn"
232
+ android:layout_width="130dp"
233
+ android:layout_height="40dp"
234
+ android:layout_gravity="center"
235
+ android:background="#5CD9FF"
236
+ android:gravity="center"
237
+ android:text="Settings ..."
238
+ android:textColor="#FFFFFF"
239
+ android:textSize="15sp"
240
+ android:layout_marginRight="3dp"
241
+ android:visibility="visible"/>
242
+
243
+ <ImageView
244
+ android:id="@+id/overlayServiceStatus"
245
+ android:layout_width="wrap_content"
246
+ android:layout_marginRight="10dp"
247
+ android:layout_gravity="center"
248
+ android:layout_height="wrap_content"
249
+ android:src="@drawable/baseline_check_24"
250
+ android:visibility="gone"/>
251
+ </LinearLayout>
252
+ <Button
253
+ android:id="@+id/restartBtn"
254
+ android:layout_width="wrap_content"
255
+ android:layout_height="40dp"
256
+ android:layout_gravity="left"
257
+ android:layout_margin="3dp"
258
+ android:layout_marginRight="3dp"
259
+ android:background="#5CD9FF"
260
+ android:gravity="center"
261
+ android:text="Restart Browser"
262
+ android:textColor="#FFFFFF"
263
+ android:textSize="15sp"
264
+ android:visibility="visible" />
265
+ </LinearLayout>
266
+ </ScrollView>
267
+ </LinearLayout>
@@ -1,18 +1,18 @@
1
1
  /*------------------------------------------------------------------------
2
2
  * (The MIT License)
3
- *
3
+ *
4
4
  * Copyright (c) 2008-2011 Rhomobile, Inc.
5
- *
5
+ *
6
6
  * Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  * of this software and associated documentation files (the "Software"), to deal
8
8
  * in the Software without restriction, including without limitation the rights
9
9
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
10
  * copies of the Software, and to permit persons to whom the Software is
11
11
  * furnished to do so, subject to the following conditions:
12
- *
12
+ *
13
13
  * The above copyright notice and this permission notice shall be included in
14
14
  * all copies or substantial portions of the Software.
15
- *
15
+ *
16
16
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
17
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
18
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -20,7 +20,7 @@
20
20
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
22
  * THE SOFTWARE.
23
- *
23
+ *
24
24
  * http://rhomobile.com
25
25
  *------------------------------------------------------------------------*/
26
26
 
@@ -29,6 +29,8 @@ package com.rhomobile.rhodes;
29
29
  import com.rhomobile.rhodes.osfunctionality.AndroidFunctionalityManager;
30
30
  import com.rhomobile.rhodes.util.PerformOnUiThread;
31
31
  import com.rhomobile.rhodes.util.Utils;
32
+ import com.rhomobile.rhodes.permissioncheck.PermissionListGenerate;
33
+
32
34
 
33
35
  import android.app.Activity;
34
36
  import android.content.ComponentName;
@@ -48,17 +50,20 @@ import android.provider.Settings;
48
50
  import android.os.Build;
49
51
 
50
52
  public class BaseActivity extends Activity implements ServiceConnection {
51
-
53
+
52
54
  private static final String TAG = BaseActivity.class.getSimpleName();
53
-
55
+
54
56
  private static final boolean DEBUG = false;
55
-
57
+
56
58
  private static boolean setFullScreenFlag = false;
57
-
59
+
58
60
  public static final String INTENT_SOURCE = BaseActivity.class.getName();
59
-
61
+
60
62
  public boolean mEnableScreenOrientationOverride = false;
61
-
63
+
64
+
65
+ private int mCurrentScreenOrientation = -1;
66
+
62
67
  public static class ScreenProperties {
63
68
  private int mScreenWidth;
64
69
  private int mScreenHeight;
@@ -67,12 +72,12 @@ public class BaseActivity extends Activity implements ServiceConnection {
67
72
  private int mScreenOrientation;
68
73
  private float mScreenPpiX;
69
74
  private float mScreenPpiY;
70
-
71
-
75
+
76
+
72
77
  ScreenProperties(Context context) {
73
78
  reread(context);
74
79
  }
75
-
80
+
76
81
  public void reread(Context context) {
77
82
  Logger.T(TAG, "Updating screen properties");
78
83
 
@@ -117,7 +122,7 @@ public class BaseActivity extends Activity implements ServiceConnection {
117
122
 
118
123
  Logger.D(TAG, "New screen properties - width: " + mScreenWidth + ", height: " + mScreenHeight + ", orientation: " + mScreenOrientation);
119
124
  }
120
-
125
+
121
126
  public int getWidth() { return mScreenWidth; }
122
127
  public int getHeight() { return mScreenHeight; }
123
128
  public int getRealWidth() { return mRealScreenWidth; }
@@ -128,7 +133,7 @@ public class BaseActivity extends Activity implements ServiceConnection {
128
133
  }
129
134
 
130
135
  private static ScreenProperties sScreenProp = null;
131
-
136
+
132
137
  public static ScreenProperties getScreenProperties() { return sScreenProp; }
133
138
 
134
139
  private static boolean sFullScreen = RhoConf.isExist("full_screen") ? RhoConf.getBool("full_screen") : false;
@@ -138,7 +143,7 @@ public class BaseActivity extends Activity implements ServiceConnection {
138
143
 
139
144
  private static int sActivitiesActive;
140
145
  private static BaseActivity sTopActivity = null;
141
-
146
+
142
147
  private static boolean sScreenAutoRotate = true;
143
148
 
144
149
  public static void onActivityStarted(Activity activity) {
@@ -174,7 +179,7 @@ public class BaseActivity extends Activity implements ServiceConnection {
174
179
  ++sActivitiesActive;
175
180
  Logger.D(TAG, "activityStarted (2): sActivitiesActive=" + sActivitiesActive);
176
181
  }
177
-
182
+
178
183
  public static void activityStopped() {
179
184
  Logger.D(TAG, "activityStopped (1): sActivitiesActive=" + sActivitiesActive);
180
185
 
@@ -188,61 +193,84 @@ public class BaseActivity extends Activity implements ServiceConnection {
188
193
  }
189
194
  Logger.D(TAG, "activityStopped (2): sActivitiesActive=" + sActivitiesActive);
190
195
  }
191
-
196
+
192
197
  public static int getActivitiesCount() {
193
198
  return sActivitiesActive;
194
199
  }
195
200
 
201
+ protected boolean mIsServiceAllreadyExist = false;
202
+
203
+ private PermissionListGenerate pl;
204
+ private boolean startedApp = false;
205
+
196
206
  @Override
197
207
  protected void onCreate(Bundle savedInstanceState) {
198
208
  super.onCreate(savedInstanceState);
199
209
  Logger.T(TAG, "onCreate");
210
+
211
+ pl = new PermissionListGenerate(this, this);
212
+
213
+ if(pl.checkAllPermissionsStatus()){
214
+
215
+ mIsServiceAllreadyExist = false;
216
+
217
+ Intent intent = new Intent(this, RhodesService.class);
218
+ intent.putExtra(RhodesService.INTENT_SOURCE, INTENT_SOURCE);
219
+
220
+ Logger.D(TAG, "onCreate() startForegroundService PRE");
221
+ ComponentName serviceName = null;
222
+ // use new mechanism for foregorund service only for 9.0 and later
223
+ int sdkVersion = Build.VERSION.SDK_INT;
224
+
225
+ if(RhodesService.getInstance() == null) {
226
+ Logger.D(TAG, "onCreate() startForegroundService PRE");
227
+ if (sdkVersion >= 28) {
228
+ serviceName = AndroidFunctionalityManager.getAndroidFunctionality().startForegroundService(this, intent);
229
+ }
230
+ else {
231
+ serviceName = startService(intent);
232
+ }
233
+ Logger.D(TAG, "onCreate() startForegroundService POST");
234
+ //ComponentName serviceName = startService(intent);
235
+ if (serviceName == null)
236
+ throw new RuntimeException("Can not start Rhodes service");
237
+
238
+ } else {
239
+ Logger.D(TAG, "onCreate() RhodesService allready started");
240
+ mIsServiceAllreadyExist = true;
241
+ }
200
242
 
201
- Intent intent = new Intent(this, RhodesService.class);
202
- intent.putExtra(RhodesService.INTENT_SOURCE, INTENT_SOURCE);
203
-
204
- Logger.D(TAG, "onCreate() startForegroundService PRE");
205
- ComponentName serviceName = null;
206
- // use new mechanism for foregorund service only for 9.0 and later
207
- int sdkVersion = Build.VERSION.SDK_INT;
208
- if (sdkVersion >= 28) {
209
- serviceName = AndroidFunctionalityManager.getAndroidFunctionality().startForegroundService(this, intent);
210
- }
211
- else {
212
- serviceName = startService(intent);
213
- }
214
- Logger.D(TAG, "onCreate() startForegroundService POST");
243
+ bindService(intent, this, Context.BIND_AUTO_CREATE);
244
+ mBoundToService = true;
245
+
215
246
 
216
- //ComponentName serviceName = startService(intent);
217
- if (serviceName == null)
218
- throw new RuntimeException("Can not start Rhodes service");
219
- bindService(intent, this, Context.BIND_AUTO_CREATE);
220
- mBoundToService = true;
247
+ if (RhoConf.isExist("disable_screen_rotation")) {
248
+ sScreenAutoRotate = !RhoConf.getBool("disable_screen_rotation");
249
+ }
250
+ if (mEnableScreenOrientationOverride) {
251
+ sScreenAutoRotate = true;
252
+ }
221
253
 
222
- if (RhoConf.isExist("disable_screen_rotation")) {
223
- sScreenAutoRotate = !RhoConf.getBool("disable_screen_rotation");
224
- }
225
- if (mEnableScreenOrientationOverride) {
226
- sScreenAutoRotate = true;
227
- }
254
+ if (sScreenProp == null) {
255
+ sScreenProp = new ScreenProperties(this);
256
+ } else {
257
+ if (!sScreenAutoRotate) {
258
+ Logger.D(TAG, "Screen rotation is disabled. Force orientation: " + getScreenProperties().getOrientation());
259
+ setRequestedOrientation(getScreenProperties().getOrientation());
260
+ }
261
+ }
228
262
 
229
- if (sScreenProp == null) {
230
- sScreenProp = new ScreenProperties(this);
231
- } else {
232
- if (!sScreenAutoRotate) {
233
- Logger.D(TAG, "Screen rotation is disabled. Force orientation: " + getScreenProperties().getOrientation());
234
- setRequestedOrientation(getScreenProperties().getOrientation());
263
+ if (RhoConf.getInt("WebView.replaceContentBySplashWhenSnapshotBySystem") == 1) {
264
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
265
+ }
266
+ else
267
+ {
268
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
235
269
  }
236
- }
237
270
 
238
- if (RhoConf.getInt("WebView.replaceContentBySplashWhenSnapshotBySystem") == 1) {
239
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
271
+ startedApp = true;
240
272
  }
241
- else
242
- {
243
- getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
244
- }
245
-
273
+
246
274
  }
247
275
 
248
276
  @Override
@@ -265,13 +293,84 @@ public class BaseActivity extends Activity implements ServiceConnection {
265
293
  onActivityStarted(this);
266
294
  }
267
295
 
296
+ @Override
297
+ protected void onPause() {
298
+ super.onPause();
299
+ if (pl.isShowPermissionDialog()){
300
+ pl.closePermissionsDialog();
301
+ }
302
+ }
303
+
268
304
  @Override
269
305
  protected void onResume() {
270
306
  super.onResume();
307
+
308
+ if(pl != null && !pl.checkAllPermissionsStatus())
309
+ pl.showPermissionList();
310
+ else{
311
+ mIsServiceAllreadyExist = false;
312
+
313
+ Intent intent = new Intent(this, RhodesService.class);
314
+ intent.putExtra(RhodesService.INTENT_SOURCE, INTENT_SOURCE);
315
+
316
+ Logger.D(TAG, "onCreate() startForegroundService PRE");
317
+ ComponentName serviceName = null;
318
+ // use new mechanism for foregorund service only for 9.0 and later
319
+ int sdkVersion = Build.VERSION.SDK_INT;
320
+
321
+ if(RhodesService.getInstance() == null) {
322
+ Logger.D(TAG, "onCreate() startForegroundService PRE");
323
+ if (sdkVersion >= 28) {
324
+ serviceName = AndroidFunctionalityManager.getAndroidFunctionality().startForegroundService(this, intent);
325
+ }
326
+ else {
327
+ serviceName = startService(intent);
328
+ }
329
+ Logger.D(TAG, "onCreate() startForegroundService POST");
330
+ //ComponentName serviceName = startService(intent);
331
+ if (serviceName == null)
332
+ throw new RuntimeException("Can not start Rhodes service");
333
+
334
+ } else {
335
+ Logger.D(TAG, "onCreate() RhodesService allready started");
336
+ mIsServiceAllreadyExist = true;
337
+ }
338
+
339
+ bindService(intent, this, Context.BIND_AUTO_CREATE);
340
+ mBoundToService = true;
341
+
342
+
343
+ if (RhoConf.isExist("disable_screen_rotation")) {
344
+ sScreenAutoRotate = !RhoConf.getBool("disable_screen_rotation");
345
+ }
346
+ if (mEnableScreenOrientationOverride) {
347
+ sScreenAutoRotate = true;
348
+ }
349
+
350
+ if (sScreenProp == null) {
351
+ sScreenProp = new ScreenProperties(this);
352
+ } else {
353
+ if (!sScreenAutoRotate) {
354
+ Logger.D(TAG, "Screen rotation is disabled. Force orientation: " + getScreenProperties().getOrientation());
355
+ setRequestedOrientation(getScreenProperties().getOrientation());
356
+ }
357
+ }
358
+
359
+ if (RhoConf.getInt("WebView.replaceContentBySplashWhenSnapshotBySystem") == 1) {
360
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
361
+ }
362
+ else
363
+ {
364
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
365
+ }
366
+
367
+ startedApp = true;
368
+ }
369
+
271
370
  if((RhoConf.isExist("full_screen") ? RhoConf.getBool("full_screen") : false ) && setFullScreenFlag ==false){
272
371
  setFullScreen(true);
273
372
  }else if(sFullScreen){
274
- setFullScreen(true);
373
+ setFullScreen(true);
275
374
  }else{
276
375
  setFullScreen(false);
277
376
  }
@@ -287,10 +386,27 @@ public class BaseActivity extends Activity implements ServiceConnection {
287
386
  super.onStop();
288
387
  }
289
388
 
389
+ //public void setRequestedOrientationTau(int requestedOrientation) {
390
+ // Logger.T(TAG, "$$$ setRequestedOrientationTau("+String.valueOf(requestedOrientation)+")");
391
+ // Thread.dumpStack();
392
+ // super.setRequestedOrientation(requestedOrientation);
393
+ //}
394
+
395
+ @Override
396
+ public void setRequestedOrientation(int requestedOrientation) {
397
+ //if (!sScreenAutoRotate) {
398
+ // return;
399
+ //}
400
+ Logger.T(TAG, "$$$ setRequestedOrientation("+String.valueOf(requestedOrientation)+")");
401
+ mCurrentScreenOrientation = requestedOrientation;
402
+ //Thread.dumpStack();
403
+ super.setRequestedOrientation(requestedOrientation);
404
+ }
405
+
290
406
  @Override
291
407
  public void onConfigurationChanged(Configuration newConfig) {
292
408
  //Utils.platformLog("$$$$$", "BaseActivity.onConfigurationChanged()");
293
- Logger.T(TAG, "onConfigurationChanged");
409
+ Logger.T(TAG, "$$$ onConfigurationChanged");
294
410
  super.onConfigurationChanged(newConfig);
295
411
  if(!sScreenAutoRotate)
296
412
  {
@@ -298,8 +414,9 @@ public class BaseActivity extends Activity implements ServiceConnection {
298
414
 
299
415
  if (!mEnableScreenOrientationOverride) {
300
416
  //Utils.platformLog("$$$$$", "BaseActivity.onConfigurationChanged() ###2");
301
- Logger.D(TAG, "Screen rotation is disabled. Force old orientation: " + getScreenProperties().getOrientation());
302
- setRequestedOrientation(getScreenProperties().getOrientation());
417
+ //Logger.T(TAG, "$$$ Screen rotation is disabled. Force old orientation: " + getScreenProperties().getOrientation());
418
+ Logger.T(TAG, "$$$ Screen rotation is disabled. Force current orientation: " + String.valueOf(mCurrentScreenOrientation));
419
+ setRequestedOrientation(mCurrentScreenOrientation);
303
420
  }
304
421
  }
305
422
  else
@@ -350,7 +467,7 @@ public class BaseActivity extends Activity implements ServiceConnection {
350
467
  else {
351
468
  if (!mEnableScreenOrientationOverride) {
352
469
  //Utils.platformLog("$$$$$", "BaseActivity.onConfigurationChanged() ###2");
353
- Logger.D(TAG, "Screen rotation is disabled by Android settings. ##### Force old orientation: " + getScreenProperties().getOrientation());
470
+ Logger.D(TAG, "$$$ Screen rotation is disabled by Android settings. ##### Force old orientation: " + getScreenProperties().getOrientation());
354
471
  setRequestedOrientation(getScreenProperties().getOrientation());
355
472
  }
356
473
  }
@@ -382,11 +499,11 @@ public class BaseActivity extends Activity implements ServiceConnection {
382
499
  }
383
500
  });
384
501
  }
385
-
502
+
386
503
  public static boolean getFullScreenMode() {
387
504
  return sFullScreen;
388
505
  }
389
-
506
+
390
507
  public static void setScreenAutoRotateMode(boolean mode) {
391
508
  //Utils.platformLog("$$$$$", "BaseActivity.setScreenAutoRotateMode("+String.valueOf(mode)+")");
392
509
  sScreenAutoRotate = mode;
@@ -397,7 +514,7 @@ public class BaseActivity extends Activity implements ServiceConnection {
397
514
 
398
515
  public static boolean getScreenAutoRotateMode() {
399
516
  //Utils.platformLog("$$$$$", "BaseActivity.getScreenAutoRotateMode("+String.valueOf(sScreenAutoRotate)+")");
400
- return sScreenAutoRotate;
517
+ return sScreenAutoRotate;
401
518
  }
402
519
 
403
520
  public void setFullScreen(boolean enable) {