7

我有一个 Android Jelly Bean 平板电脑,它已经植根并试图运行一个应用程序,该应用程序具有隐藏系统栏的代码,但它没有被隐藏,任何人都可以帮助我解决这个问题。

在终端中获取输出: Result Parcel(00000000 '....')

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button hide=(Button)findViewById(R.id.button1);
        Button show=(Button)findViewById(R.id.button2);
        hide.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 Log.v("ds", "hideSystembar");
                    try {
                        Process proc = Runtime.getRuntime().exec(new String[]{
                                "su","-c","service call activity 79 s16 com.android.systemui"});
                        proc.waitFor();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
            }
        });
        show.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                  Log.v("f", "showSystembar");
                    try {
                        Process proc = Runtime.getRuntime().exec(new String[]{
                                "am","startservice","-n","com.android.systemui/.SystemUIService"});
                        proc.waitFor();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
            }
        });
    }
} 

虽然我得到了许可:在此处输入图像描述

超级用户日志截图: 在此处输入图像描述

4

2 回答 2

22

引入 ICS 时,该类的进程 IDSystemUI从 79 更改为 42。
下面的代码适用于您的应用程序可能运行的任何 Android 版本。

//HIDE TOOLBAR
try{
    //REQUIRES ROOT
    Build.VERSION_CODES vc = new Build.VERSION_CODES();
    Build.VERSION vr = new Build.VERSION();
    String ProcID = "79"; //HONEYCOMB AND OLDER

    //v.RELEASE  //4.0.3
    if(vr.SDK_INT >= vc.ICE_CREAM_SANDWICH){
        ProcID = "42"; //ICS AND NEWER
    }

    //REQUIRES ROOT
    Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity "+ ProcID +" s16 com.android.systemui"}); //WAS 79
    proc.waitFor();

}catch(Exception ex){
    Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
}
于 2012-12-17T22:55:27.510 回答
2

我写了一篇文章,解释了如何获得root权限,即使在Android 4.2上也能隐藏/显示系统栏

http://masashi-k.blogspot.com/2013/09/hide-show-system-bar-of-android.html

使用 RootTools 库获取 root 权限。 在此处输入图像描述

隐藏系统栏 在此处输入图像描述

于 2013-09-20T23:52:30.097 回答