Android - Show/Hide system bar on 4.2.2 (Nexus 10)

后端 未结 3 1711
情歌与酒
情歌与酒 2021-02-06 17:46

I got issue with Nexus 10 - 4.2.2. I was testing code below on Galaxy Tab 10.1 with 4.0.4 and it was working fine:

try 
{
    Process proc = Runtime.getRuntime()         


        
相关标签:
3条回答
  • 2021-02-06 18:09

    Answer by goodm works fine, but most of us are not aware about envp

    So here is full code:

    HIDE

    try
    {
        String command;
        command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib service call activity 42 s16 com.android.systemui";
    
        ArrayList<String> envlist = new ArrayList<String>();
        Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            envlist.add(envName + "=" + env.get(envName));
        }
        String[] envp = (String[]) envlist.toArray(new String[0]);
        Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", command }, envp);
        proc.waitFor();
    }
    catch(Exception ex)
    {
        Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
    }
    

    You can use similar for show.

    0 讨论(0)
  • 2021-02-06 18:10

    To show and hide the system bar and notification bar on 4.2.2 and others:

    Hide:

        try
        {
            String command;
            command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib service call activity 42 s16 com.android.systemui";
            Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", command }, envp);
            proc.waitFor();
        }
        catch(Exception ex)
        {
            Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show();
        }
    

    Show:

        try 
        {
             String command;
             command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib am startservice -n com.android.systemui/.SystemUIService";
             Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", command }, envp);
             proc.waitFor();
        } 
        catch (Exception e) 
        {
              e.printStackTrace();
        }
    
    0 讨论(0)
  • 2021-02-06 18:31

    I think you should not use system calls via Runtime.exec() to get that result. You should look at the code in FullscreenActivity template (sources are placed in <android-sdk-folder>/tools/templates/activities/FullscreenActivity/root): that is a full working example showing how to show/hide system bars (both top and bottom one) programmatically, and it even supports animations for API 13+.

    0 讨论(0)
提交回复
热议问题