2012-11-19 19 views
7

Ho un tablet Android Jelly Bean che è stato rootato e tenta di eseguire un'applicazione che ha il codice per nascondere la barra di sistema ma non viene nascosto può aiutarmi qualcuno su questo.Nascondi barra di sistema in Jelly Bean Tablet (root)

uscita Ottenere nel terminale: 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(); 
        } 
      } 
     }); 
    } 
} 

Anche se io sono sempre brindisi di autorizzazione rilasciata: enter image description here

colpo super User Log schermo: enter image description here

risposta

21

L'id di processo per la classe SystemUI cambiato da 79 a 42 quando è stato introdotto ICS.
Il codice seguente funziona per qualsiasi versione di Android su cui la tua app potrebbe essere in esecuzione.

//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(); 
} 
+0

Grazie mille signore ha funzionato per me .. !! La costante di processo era il problema principale .. !! –

+1

Ehi. Fai attenzione che ho provato un dispositivo che nascondendo la barra in basso in questo modo farebbe diventare lo sfondo del launcher completamente nero! (Grazie a Dio, la carta da parati dal vivo non è influenzata.) Quindi, studiando la sorgente [HideBar] (http://ppareit.github.com/HideBar/), prima di nascondere la barra, dovremmo ottenere lo sfondo 'Disegnabile' da' WallpaperManager '. Dopo aver nascosto la barra e aver atteso qualche ritardo (richiesto?), È necessario ripristinare lo sfondo 'Bitmap' dallo sfondo' Disegnabile' usando 'wallpaperManager.setBitmap (bitmap)'. Ricorda inoltre di impostare il permesso 'android.permission.SET_WALLPAPER ' – Yeung

+0

Solo un modo più semplice per eseguire ProcId (con importazioni statiche): import static android.os.Build.VERSION.SDK_INT; import static android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH; // nel codice String ProcID = (SDK_INT> = ICE_CREAM_SANDWICH)? "42": "79"; – pablisco

Problemi correlati