android4.0.3去掉底部状态栏statusbar,全屏显示示例代码
2013-10-30 14:52
555 查看
要去掉android4.0上的状态栏,全屏显示的代码如下:
1、将usleep和killall这二个文件放到assets文件夹下。这二个文件可在下面的附件中下载到。
2、创建Device.java(注:附件里有完整的代码):
3、然后在加载acitivity或你想全屏的activity中,加入以下代码:
1、将usleep和killall这二个文件放到assets文件夹下。这二个文件可在下面的附件中下载到。
2、创建Device.java(注:附件里有完整的代码):
001 | import java.io.BufferedInputStream; |
002 | import java.io.BufferedReader; |
003 | import java.io.DataOutputStream; |
004 | import java.io.File; |
005 | import java.io.FileNotFoundException; |
006 | import java.io.FileOutputStream; |
007 | import java.io.IOException; |
008 | import java.io.InputStream; |
009 | import java.io.InputStreamReader; |
010 | import java.util.ArrayList; |
011 | import java.util.Map; |
012 |
013 | import android.content.Context; |
014 | import android.content.res.AssetManager; |
015 | import android.util.Log; |
016 |
017 |
018 | public enum Device { |
019 |
020 | INSTANCE; |
021 |
022 | private static String TAG = Device. class .getSimpleName(); |
023 |
024 | private boolean mHasRootBeenChecked = false ; |
025 | private boolean mIsDeviceRooted = false ; |
026 |
027 | private boolean mHasBeenInitialized = false ; |
028 | private Context mAppContext = null ; |
029 |
030 | private boolean mSystembarVisible = true ; |
031 |
032 | static public void initialize(Context appContext) { |
033 | if (INSTANCE.mHasBeenInitialized == true ) { |
034 | Log.e(TAG, "Initializing already initialized class " + TAG); |
035 | } |
036 | INSTANCE.mHasBeenInitialized = true ; |
037 | INSTANCE.mAppContext = appContext; |
038 | AddKillAll(appContext, "killall" ); |
039 | AddKillAll(appContext, "usleep" ); |
040 | } |
041 |
042 | private static void AddKillAll(Context appContext, String commandFileName) { |
043 | File killAllFile = new File( "/system/xbin/" +commandFileName); |
044 | if (!killAllFile.exists()) { |
045 | AssetManager assetManager = appContext.getAssets(); |
046 | InputStream inputStream = null ; |
047 | String commandFilePath = null ; |
048 | try { |
049 | inputStream = assetManager.open(commandFileName); |
050 | commandFilePath = appContext.getApplicationContext().getFilesDir() |
051 | .getAbsolutePath() + File.separator + commandFileName; |
052 | saveToFile(commandFilePath, inputStream); |
053 | } catch (IOException e) { |
054 | Log.e( "tag" , e.toString()); |
055 | } |
056 | try { |
057 | Process p; |
058 | p = Runtime.getRuntime().exec( "su" ); |
059 | DataOutputStream os = new DataOutputStream(p.getOutputStream()); |
060 | os.writeBytes( "mount -o remount,rw /dev/block/stl6 /system\n" ); |
061 | os.writeBytes( "cd system/xbin\n" ); |
062 | os.writeBytes( "cat " + commandFilePath + " > " + commandFileName + "\n" ); |
063 | os.writeBytes( "chmod 755 " + commandFileName + "\n" ); |
064 | os.writeBytes( "mount -o remount,ro /dev/block/stl6 /system\n" ); |
065 | os.writeBytes( "exit\n" ); |
066 | os.flush(); |
067 | p.waitFor(); |
068 | } catch (Exception e) { |
069 | Log.e(TAG, e.toString()); |
070 | } |
071 | } |
072 | } |
073 |
074 | static public Device getInstance() { |
075 | INSTANCE.checkInitialized(); |
076 | return INSTANCE; |
077 | } |
078 |
079 | private void checkInitialized() { |
080 | if (mHasBeenInitialized == false ) |
081 | throw new IllegalStateException( "Singleton class " + TAG |
082 | + " is not yet initialized" ); |
083 | } |
084 |
085 | public boolean isRooted() { |
086 |
087 | checkInitialized(); |
088 |
089 |
090 | if (mHasRootBeenChecked) { |
091 | return mIsDeviceRooted; |
092 | } |
093 |
094 | try { |
095 | File file = new File( "/system/app/Superuser.apk" ); |
096 | if (file.exists()) { |
097 | mHasRootBeenChecked = true ; |
098 | mIsDeviceRooted = true ; |
099 | return true ; |
100 | } |
101 | } catch (Exception e) { |
102 | e.printStackTrace(); |
103 | } |
104 |
105 | try { |
106 | ArrayList<String> envlist = new ArrayList<String>(); |
107 | Map<String, String> env = System.getenv(); |
108 | for (String envName : env.keySet()) { |
109 | envlist.add(envName + "=" + env.get(envName)); |
110 | } |
111 | String[] envp = (String[]) envlist.toArray( new String[ 0 ]); |
112 | Process proc = Runtime.getRuntime() |
113 | .exec( new String[] { "which" , "su" }, envp); |
114 | BufferedReader in = new BufferedReader( new InputStreamReader( |
115 | proc.getInputStream())); |
116 | if (in.readLine() != null ) { |
117 | mHasRootBeenChecked = true ; |
118 | mIsDeviceRooted = true ; |
119 | return true ; |
120 | } |
121 | } catch (Exception e) { |
122 | e.printStackTrace(); |
123 | } |
124 |
125 | mHasRootBeenChecked = true ; |
126 | mIsDeviceRooted = false ; |
127 | return false ; |
128 |
129 | } |
130 |
131 | public enum AndroidVersion { |
132 | HC, ICS, JB, UNKNOWN |
133 | }; |
134 |
135 | public AndroidVersion getAndroidVersion() { |
136 | checkInitialized(); |
137 | int sdk = android.os.Build.VERSION.SDK_INT; |
138 | if ( 11 <= sdk && sdk <= 13 ) { |
139 | return AndroidVersion.HC; |
140 | } else if ( 14 <= sdk && sdk <= 15 ) { |
141 | return AndroidVersion.ICS; |
142 | } else if ( 16 == sdk) { |
143 | return AndroidVersion.JB; |
144 | } else { |
145 | return AndroidVersion.UNKNOWN; |
146 | } |
147 | } |
148 |
149 | public void showSystembar( boolean makeVisible) { |
150 | checkInitialized(); |
151 | try { |
152 | ArrayList<String> envlist = new ArrayList<String>(); |
153 | Map<String, String> env = System.getenv(); |
154 | for (String envName : env.keySet()) { |
155 | envlist.add(envName + "=" + env.get(envName)); |
156 | } |
157 | String[] envp = (String[]) envlist.toArray( new String[ 0 ]); |
158 | if (makeVisible) { |
159 | String command; |
160 | Device dev = Device.getInstance(); |
161 | if (dev.getAndroidVersion() == AndroidVersion.HC) { |
162 | command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib am startservice -n com.android.systemui/.SystemUIService" ; |
163 | } else { |
164 | command = "rm /sdcard/hidebar-lock\n" |
165 | + "sleep 5\n" |
166 | + "LD_LIBRARY_PATH=/vendor/lib:/system/lib am startservice -n com.android.systemui/.SystemUIService" ; |
167 | } |
168 | Runtime.getRuntime().exec( new String[] { "su" , "-c" , command }, envp); |
169 | mSystembarVisible = true ; |
170 | } else { |
171 | String command; |
172 | Device dev = Device.getInstance(); |
173 | if (dev.getAndroidVersion() == AndroidVersion.HC) { |
174 | command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib service call activity 79 s16 com.android.systemui" ; |
175 | } else { |
176 | command = "touch /sdcard/hidebar-lock\n" |
177 | + "while [ -f /sdcard/hidebar-lock ]\n" |
178 | + "do\n" |
179 | + "killall com.android.systemui\n" |
180 | + "usleep 500000\n" |
181 | + "done\n" |
182 | + "LD_LIBRARY_PATH=/vendor/lib:/system/lib am startservice -n com.android.systemui/.SystemUIService" ; |
183 | } |
184 | Runtime.getRuntime().exec( new String[] { "su" , "-c" , command }, envp); |
185 | mSystembarVisible = false ; |
186 | } |
187 | } catch (Exception e) { |
188 | e.printStackTrace(); |
189 | } |
190 | } |
191 |
192 | public boolean isSystembarVisible() { |
193 | checkInitialized(); |
194 | return mSystembarVisible; |
195 | } |
196 |
197 | public void sendBackEvent() { |
198 | try { |
199 | ArrayList<String> envlist = new ArrayList<String>(); |
200 | Map<String, String> env = System.getenv(); |
201 | for (String envName : env.keySet()) { |
202 | envlist.add(envName + "=" + env.get(envName)); |
203 | } |
204 | String[] envp = (String[]) envlist.toArray( new String[ 0 ]); |
205 | Runtime.getRuntime().exec( |
206 | new String[] { "su" , "-c" , |
207 | "LD_LIBRARY_PATH=/vendor/lib:/system/lib input keyevent 4" }, |
208 | envp); |
209 | } catch (Exception e) { |
210 | e.printStackTrace(); |
211 | } |
212 | } |
213 |
214 | public static void saveToFile(String filePath, InputStream in){ |
215 | FileOutputStream fos = null ; |
216 | BufferedInputStream bis = null ; |
217 | int BUFFER_SIZE = 1024 ; |
218 | byte [] buf = new byte [BUFFER_SIZE]; |
219 | int size = 0 ; |
220 | bis = new BufferedInputStream(in); |
221 | try { |
222 | fos = new FileOutputStream(filePath); |
223 | while ((size =bis.read(buf)) != - 1 ) |
224 | fos.write(buf, 0 , size); |
225 | } catch (FileNotFoundException e) { |
226 | e.printStackTrace(); |
227 | } catch (IOException e) { |
228 | e.printStackTrace(); |
229 | } finally { |
230 | try { |
231 | if (fos != null ) { |
232 | fos.close(); |
233 | } |
234 | if (bis != null ) { |
235 | bis.close(); |
236 | } |
237 | } catch (IOException e) { |
238 | e.printStackTrace(); |
239 | } |
240 | } |
241 | } |
242 |
243 | } |
1 | //当为true时,表示有底部状态栏 |
2 | Device.initialize(getApplicationContext()); |
3 | Device device = Device.getInstance(); |
4 | device.showSystembar( false ); |
相关文章推荐
- 【原】Activity的LaunchMode和taskAffinity
- android Intent启动flag
- android 异步消息处理
- android 触摸事件冒泡动画效果
- Android.mk FILE_LIST遍历
- Android的NDK开发(3)————JNI数据类型的详解
- 第一个android程序
- Android笔记之Thread内部不要处理数据
- android 之Fragment(官网资料翻译)
- Android NDK环境搭建及调用JNI的简单步骤
- android PopupWindow
- Android类库常用类库一览
- Android实战技巧:用TextView实现Rich Text---在同一个TextView中设置不同的字体风格
- Android学习篇章3-Gallery画廊-Baseadapter
- Pro Android学习笔记(四七):Dialog(4):一些补充和思考
- Android.mk的用法和基础
- android开发 通过拍照或选择本地图片并剪裁图片设置成头像
- Android学习篇章2-Drop雨滴效果
- Android 解析后台返回为Json数据的简单例子
- android merge set background not work