diff --git a/framework/src/org/apache/cordova/CordovaWebView.java b/framework/src/org/apache/cordova/CordovaWebView.java index cdd2fbda..2ff342a9 100644 --- a/framework/src/org/apache/cordova/CordovaWebView.java +++ b/framework/src/org/apache/cordova/CordovaWebView.java @@ -39,6 +39,7 @@ import android.net.Uri; import android.os.Bundle; import android.util.AttributeSet; import android.util.Log; +import android.view.WindowManager; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebSettings.LayoutAlgorithm; @@ -76,40 +77,38 @@ public class CordovaWebView extends WebView { */ public CordovaWebView(Context context) { super(context); - if(CordovaInterface.class.isInstance(context)) + if (CordovaInterface.class.isInstance(context)) { - this.mCtx = (CordovaInterface) context; + this.mCtx = (CordovaInterface) context; } else { - Log.d(TAG, "Your activity must implement CordovaInterface to work"); + Log.d(TAG, "Your activity must implement CordovaInterface to work"); } this.loadConfiguration(); this.setup(); } - /** * Constructor. * - * * @param context * @param attrs */ public CordovaWebView(Context context, AttributeSet attrs) { - super(context, attrs); - if(CordovaInterface.class.isInstance(context)) - { - this.mCtx = (CordovaInterface) context; - } - else - { - Log.d(TAG, "Your activity must implement CordovaInterface to work"); - } - this.setWebChromeClient(new CordovaChromeClient(this.mCtx, this)); - this.setWebViewClient(new CordovaWebViewClient(this.mCtx, this)); - this.loadConfiguration(); - this.setup(); + super(context, attrs); + if (CordovaInterface.class.isInstance(context)) + { + this.mCtx = (CordovaInterface) context; + } + else + { + Log.d(TAG, "Your activity must implement CordovaInterface to work"); + } + this.setWebChromeClient(new CordovaChromeClient(this.mCtx, this)); + this.setWebViewClient(new CordovaWebViewClient(this.mCtx, this)); + this.loadConfiguration(); + this.setup(); } /** @@ -120,15 +119,15 @@ public class CordovaWebView extends WebView { * @param defStyle * */ - public CordovaWebView(Context context, AttributeSet attrs, int defStyle) { + public CordovaWebView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - if(CordovaInterface.class.isInstance(context)) + if (CordovaInterface.class.isInstance(context)) { - this.mCtx = (CordovaInterface) context; + this.mCtx = (CordovaInterface) context; } else { - Log.d(TAG, "Your activity must implement CordovaInterface to work"); + Log.d(TAG, "Your activity must implement CordovaInterface to work"); } this.setWebChromeClient(new CordovaChromeClient(this.mCtx, this)); this.setWebViewClient(new CordovaWebViewClient(this.mCtx, this)); @@ -146,13 +145,13 @@ public class CordovaWebView extends WebView { */ public CordovaWebView(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) { super(context, attrs, defStyle, privateBrowsing); - if(CordovaInterface.class.isInstance(context)) + if (CordovaInterface.class.isInstance(context)) { - this.mCtx = (CordovaInterface) context; + this.mCtx = (CordovaInterface) context; } else { - Log.d(TAG, "Your activity must implement CordovaInterface to work"); + Log.d(TAG, "Your activity must implement CordovaInterface to work"); } this.setWebChromeClient(new CordovaChromeClient(this.mCtx)); this.setWebViewClient(new CordovaWebViewClient(this.mCtx)); @@ -192,10 +191,10 @@ public class CordovaWebView extends WebView { //Start up the plugin manager try { - this.pluginManager = new PluginManager(this, mCtx); + this.pluginManager = new PluginManager(this, this.mCtx); } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + // TODO Auto-generated catch block + e.printStackTrace(); } } @@ -637,6 +636,11 @@ public class CordovaWebView extends WebView { else { this.useBrowserHistory = false; } + + if ("true".equals(this.getProperty("fullscreen", "false"))) { + this.mCtx.getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + this.mCtx.getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); + } } /** diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java index aeca772b..2af6c9cc 100755 --- a/framework/src/org/apache/cordova/DroidGap.java +++ b/framework/src/org/apache/cordova/DroidGap.java @@ -250,15 +250,8 @@ public class DroidGap extends Activity implements CordovaInterface { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_NO_TITLE); - - // TODO @bc - What about fullscreen? - //if (preferences.prefMatches("fullscreen", "true")) { - // getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - // WindowManager.LayoutParams.FLAG_FULLSCREEN); - //} else { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); - //} // This builds the view. We could probably get away with NOT having a LinearLayout, but I like having a bucket! Display display = getWindowManager().getDefaultDisplay(); diff --git a/test/AndroidManifest.xml b/test/AndroidManifest.xml index 4918fe51..0d280ba6 100755 --- a/test/AndroidManifest.xml +++ b/test/AndroidManifest.xml @@ -147,5 +147,8 @@ + + diff --git a/test/assets/www/fullscreen/index.html b/test/assets/www/fullscreen/index.html new file mode 100755 index 00000000..ab910acc --- /dev/null +++ b/test/assets/www/fullscreen/index.html @@ -0,0 +1,41 @@ + + + + + + + Cordova Tests + + + + + +

Full Screen Test

+
+

Platform:  , Version:  

+

UUID:  , Name:  

+

Width:  , Height:   + , Color Depth:

+
+
+ The app should take over the entire screen. The top Android status bar should not be shown.
+
+ + diff --git a/test/assets/www/index.html b/test/assets/www/index.html index 6838156f..d1a770a1 100755 --- a/test/assets/www/index.html +++ b/test/assets/www/index.html @@ -51,6 +51,7 @@ + diff --git a/test/src/org/apache/cordova/test/fullscreen.java b/test/src/org/apache/cordova/test/fullscreen.java new file mode 100755 index 00000000..8b146247 --- /dev/null +++ b/test/src/org/apache/cordova/test/fullscreen.java @@ -0,0 +1,39 @@ +/* + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +*/ +package org.apache.cordova.test; + +import android.os.Bundle; +import android.webkit.WebView; + +import org.apache.cordova.*; +import org.apache.cordova.api.LOG; + +public class fullscreen extends DroidGap { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Properties must be set before init() is called, since some are processed during init(). + super.setBooleanProperty("fullscreen", true); + + super.init(); + super.loadUrl("file:///android_asset/www/fullscreen/index.html"); + } + +}