@@ -76,6 +76,8 @@ public void OnPostGenerateGradleAndroidProject(string basePath) {
76
76
}
77
77
}
78
78
changed = ( androidManifest . SetExported ( true ) || changed ) ;
79
+ changed = ( androidManifest . SetApplicationTheme ( "@style/UnityThemeSelector" ) || changed ) ;
80
+ changed = ( androidManifest . SetActivityTheme ( "@style/UnityThemeSelector.Translucent" ) || changed ) ;
79
81
changed = ( androidManifest . SetHardwareAccelerated ( true ) || changed ) ;
80
82
#if UNITYWEBVIEW_ANDROID_USES_CLEARTEXT_TRAFFIC
81
83
changed = ( androidManifest . SetUsesCleartextTraffic ( true ) || changed ) ;
@@ -87,6 +89,9 @@ public void OnPostGenerateGradleAndroidProject(string basePath) {
87
89
#if UNITYWEBVIEW_ANDROID_ENABLE_MICROPHONE
88
90
changed = ( androidManifest . AddMicrophone ( ) || changed ) ;
89
91
#endif
92
+ //#if UNITY_5_6_0 || UNITY_5_6_1
93
+ changed = ( androidManifest . SetActivityName ( "net.gree.unitywebview.CUnityPlayerActivity" ) || changed ) ;
94
+ //#endif
90
95
if ( changed ) {
91
96
androidManifest . Save ( ) ;
92
97
Debug . Log ( "unitywebview: adjusted AndroidManifest.xml." ) ;
@@ -174,9 +179,9 @@ public static void OnPostprocessBuild(BuildTarget buildTarget, string path) {
174
179
#if UNITYWEBVIEW_ANDROID_ENABLE_MICROPHONE
175
180
changed = ( androidManifest . AddMicrophone ( ) || changed ) ;
176
181
#endif
177
- #if UNITY_5_6_0 || UNITY_5_6_1
182
+ // #if UNITY_5_6_0 || UNITY_5_6_1
178
183
changed = ( androidManifest . SetActivityName ( "net.gree.unitywebview.CUnityPlayerActivity" ) || changed ) ;
179
- #endif
184
+ // #endif
180
185
if ( changed ) {
181
186
androidManifest . Save ( ) ;
182
187
Debug . LogError ( "unitywebview: adjusted AndroidManifest.xml. Please rebuild the app." ) ;
@@ -238,6 +243,118 @@ public static void OnPostprocessBuild(BuildTarget buildTarget, string path) {
238
243
dst = ( string ) method . Invoke ( proj , null ) ;
239
244
}
240
245
File . WriteAllText ( projPath , dst ) ;
246
+
247
+ // Classes/UI/UnityView.h
248
+ {
249
+ var lines0 = File . ReadAllText ( path + "/Classes/UI/UnityView.h" ) . Split ( '\n ' ) ;
250
+ var lines = new List < string > ( ) ;
251
+ var phase = 0 ;
252
+ foreach ( var line in lines0 ) {
253
+ switch ( phase ) {
254
+ case 0 :
255
+ lines . Add ( line ) ;
256
+ if ( line . StartsWith ( "@interface UnityView : UnityRenderingView" ) ) {
257
+ phase ++ ;
258
+ }
259
+ break ;
260
+ case 1 :
261
+ lines . Add ( line ) ;
262
+ if ( line . StartsWith ( "}" ) ) {
263
+ phase ++ ;
264
+ lines . Add ( "" ) ;
265
+ lines . Add ( "- (void)clearMasks;" ) ;
266
+ lines . Add ( "- (void)addMask:(CGRect)r;" ) ;
267
+ }
268
+ break ;
269
+ default :
270
+ lines . Add ( line ) ;
271
+ break ;
272
+ }
273
+ }
274
+ File . WriteAllText ( path + "/Classes/UI/UnityView.h" , string . Join ( "\n " , lines ) ) ;
275
+ }
276
+ // Classes/UI/UnityView.mm
277
+ {
278
+ var lines0 = File . ReadAllText ( path + "/Classes/UI/UnityView.mm" ) . Split ( '\n ' ) ;
279
+ var lines = new List < string > ( ) ;
280
+ var phase = 0 ;
281
+ foreach ( var line in lines0 ) {
282
+ switch ( phase ) {
283
+ case 0 :
284
+ lines . Add ( line ) ;
285
+ if ( line . StartsWith ( "@implementation UnityView" ) ) {
286
+ phase ++ ;
287
+ }
288
+ break ;
289
+ case 1 :
290
+ if ( line . StartsWith ( "}" ) ) {
291
+ phase ++ ;
292
+ lines . Add ( " NSMutableArray<NSValue *> *_masks;" ) ;
293
+ lines . Add ( line ) ;
294
+ lines . Add ( @"
295
+ - (void)clearMasks
296
+ {
297
+ if (_masks == nil) {
298
+ _masks = [[NSMutableArray<NSValue *> alloc] init];
299
+ }
300
+ [_masks removeAllObjects];
301
+ }
302
+
303
+ - (void)addMask:(CGRect)r
304
+ {
305
+ if (_masks == nil) {
306
+ _masks = [[NSMutableArray<NSValue *> alloc] init];
307
+ }
308
+ [_masks addObject:[NSValue valueWithCGRect:r]];
309
+ }
310
+
311
+ - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
312
+ {
313
+ //CGRect mask = CGRectMake(0, 0, 1334, 100);
314
+ //return CGRectContainsPoint(mask, point);
315
+ for (NSValue *v in _masks) {
316
+ if (CGRectContainsPoint([v CGRectValue], point)) {
317
+ return TRUE;
318
+ }
319
+ }
320
+ return FALSE;
321
+ }
322
+ " ) ;
323
+ } else {
324
+ lines . Add ( line ) ;
325
+ }
326
+ break ;
327
+ default :
328
+ lines . Add ( line ) ;
329
+ break ;
330
+ }
331
+ }
332
+ lines . Add ( @"
333
+ extern ""C"" {
334
+ UIView *UnityGetGLView();
335
+ void CWebViewPlugin_ClearMasks();
336
+ void CWebViewPlugin_AddMask(int x, int y, int w, int h);
337
+ }
338
+
339
+ void CWebViewPlugin_ClearMasks()
340
+ {
341
+ [(UnityView *)UnityGetGLView() clearMasks];
342
+ }
343
+
344
+ void CWebViewPlugin_AddMask(int x, int y, int w, int h)
345
+ {
346
+ UIView *view = UnityGetGLViewController().view;
347
+ CGFloat scale = 1.0f;
348
+ if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
349
+ scale = view.window.screen.nativeScale;
350
+ } else {
351
+ scale = view.contentScaleFactor;
352
+ }
353
+ [(UnityView *)UnityGetGLView() addMask:CGRectMake(x / scale, y / scale, w / scale, h / scale)];
354
+ }
355
+ " ) ;
356
+ File . WriteAllText ( path + "/Classes/UI/UnityView.mm" , string . Join ( "\n " , lines ) ) ;
357
+ }
241
358
}
242
359
}
243
360
}
@@ -314,6 +431,25 @@ internal bool SetExported(bool enabled) {
314
431
return changed ;
315
432
}
316
433
434
+ internal bool SetApplicationTheme ( string theme ) {
435
+ bool changed = false ;
436
+ if ( ApplicationElement . GetAttribute ( "theme" , AndroidXmlNamespace ) != theme ) {
437
+ ApplicationElement . SetAttribute ( "theme" , AndroidXmlNamespace , theme ) ;
438
+ changed = true ;
439
+ }
440
+ return changed ;
441
+ }
442
+
443
+ internal bool SetActivityTheme ( string theme ) {
444
+ bool changed = false ;
445
+ var activity = GetActivityWithLaunchIntent ( ) as XmlElement ;
446
+ if ( activity . GetAttribute ( "theme" , AndroidXmlNamespace ) != theme ) {
447
+ activity . SetAttribute ( "theme" , AndroidXmlNamespace , theme ) ;
448
+ changed = true ;
449
+ }
450
+ return changed ;
451
+ }
452
+
317
453
internal bool SetHardwareAccelerated ( bool enabled ) {
318
454
bool changed = false ;
319
455
var activity = GetActivityWithLaunchIntent ( ) as XmlElement ;
0 commit comments