要去掉android4.0上的状态栏,全屏显示的代码如下:
1、将usleep和killall这二个文件放到assets文件夹下。这二个文件可在下面的附件中下载到。
2、创建Device.java(注:附件里有完整的代码):
001 | import java.io.BufferedInputStream; |
002 | import java.io.BufferedReader; |
003 | import java.io.DataOutputStream; |
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; |
013 | import android.content.Context; |
014 | import android.content.res.AssetManager; |
015 | import android.util.Log; |
022 | private static String TAG = Device. class .getSimpleName(); |
024 | private boolean mHasRootBeenChecked = false ; |
025 | private boolean mIsDeviceRooted = false ; |
027 | private boolean mHasBeenInitialized = false ; |
028 | private Context mAppContext = null ; |
030 | private boolean mSystembarVisible = true ; |
032 | static public void initialize(Context appContext) { |
033 | if (INSTANCE.mHasBeenInitialized == true ) { |
034 | Log.e(TAG, "Initializing already initialized class " + TAG); |
036 | INSTANCE.mHasBeenInitialized = true ; |
037 | INSTANCE.mAppContext = appContext; |
038 | AddKillAll(appContext, "killall" ); |
039 | AddKillAll(appContext, "usleep" ); |
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 ; |
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()); |
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" ); |
068 | } catch (Exception e) { |
069 | Log.e(TAG, e.toString()); |
074 | static public Device getInstance() { |
075 | INSTANCE.checkInitialized(); |
079 | private void checkInitialized() { |
080 | if (mHasBeenInitialized == false ) |
081 | throw new IllegalStateException( "Singleton class " + TAG |
082 | + " is not yet initialized" ); |
085 | public boolean isRooted() { |
090 | if (mHasRootBeenChecked) { |
091 | return mIsDeviceRooted; |
095 | File file = new File( "/system/app/Superuser.apk" ); |
097 | mHasRootBeenChecked = true ; |
098 | mIsDeviceRooted = true ; |
101 | } catch (Exception e) { |
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)); |
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 ; |
121 | } catch (Exception e) { |
125 | mHasRootBeenChecked = true ; |
126 | mIsDeviceRooted = false ; |
131 | public enum AndroidVersion { |
135 | public AndroidVersion getAndroidVersion() { |
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; |
145 | return AndroidVersion.UNKNOWN; |
149 | public void showSystembar( boolean makeVisible) { |
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)); |
157 | String[] envp = (String[]) envlist.toArray( new String[ 0 ]); |
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" ; |
164 | command = "rm /sdcard/hidebar-lock\n" |
166 | + "LD_LIBRARY_PATH=/vendor/lib:/system/lib am startservice -n com.android.systemui/.SystemUIService" ; |
168 | Runtime.getRuntime().exec( new String[] { "su" , "-c" , command }, envp); |
169 | mSystembarVisible = true ; |
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" ; |
176 | command = "touch /sdcard/hidebar-lock\n" |
177 | + "while [ -f /sdcard/hidebar-lock ]\n" |
179 | + "killall com.android.systemui\n" |
182 | + "LD_LIBRARY_PATH=/vendor/lib:/system/lib am startservice -n com.android.systemui/.SystemUIService" ; |
184 | Runtime.getRuntime().exec( new String[] { "su" , "-c" , command }, envp); |
185 | mSystembarVisible = false ; |
187 | } catch (Exception e) { |
192 | public boolean isSystembarVisible() { |
194 | return mSystembarVisible; |
197 | public void sendBackEvent() { |
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)); |
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" }, |
209 | } catch (Exception e) { |
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]; |
220 | bis = new BufferedInputStream(in); |
222 | fos = new FileOutputStream(filePath); |
223 | while ((size = bis.read(buf)) != - 1 ) |
224 | fos.write(buf, 0 , size); |
225 | } catch (FileNotFoundException e) { |
227 | } catch (IOException e) { |
237 | } catch (IOException e) { |
3、然后在加载acitivity或你想全屏的activity中,加入以下代码:
2 | Device.initialize(getApplicationContext()); |
3 | Device device = Device.getInstance(); |
4 | device.showSystembar( false ); |