2017-09-01 52 views
0

我想在Android奧利奧上使用這套「命令」,但我有一些問題。爲了測試我使用我的Nexus 5倍以下命令:亞行殼設置把安全的sysui_nav_bar命令在Android奧利奧8.0不工作沒有根

adb shell settings put secure sysui_nav_bar "space,recent;home;back,space" 

所以我決定實現我的應用程序內的這個命令,並嘗試無根的幫助。在應用程序清單我添加編寫安全設置的權限:

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/> 

然後在我的MainActivity我增加了一個按鈕來運行你之前閱讀命令。

 testButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      try { 
      Process process = Runtime.getRuntime().exec("settings put secure sysui_nav_bar \"space,recent;home;back,space\""); 
      } catch (Exception e) {Toast.makeText(getApplicationContext(), "" + e, Toast.LENGTH_LONG).show();} 
     } 
    }); 

一旦我的應用程序,建我跑在我的5倍,並通過亞行我輸入這個命令允許編寫安全設置:adb shell pm grant com.customizer.smart.batterysavercustomizer android.permission.WRITE_SECURE_SETTINGS和該命令沒有錯誤地excuted。但是當我嘗試點擊我的「testButton」時沒有發生任何事情,並且在androidmonitor裏面有0個erorrs。

最後的嘗試,我做的是與根幫助。我編輯我的預覽命令按鈕:

testButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     try { 
     Process process = Runtime.getRuntime().exec("su -c settings put secure sysui_nav_bar \"space,recent;home;back,space\""); 
     } catch (Exception e) {Toast.makeText(getApplicationContext(), "" + e, Toast.LENGTH_LONG).show();} 
    } 
}); 

當我在我的testButton應用要求GARANT root權限挖掘,它的工作原理。但是,在同一個手機上,使用相同adb命令的應用程序「自定義導航欄」應用程序的工作方式有可能如何在沒有根的情況下工作? 我也跟着這樣的:guide on XDA

回答

1

您應該使用設置類,而不是調用Runtime.getRuntime()EXEC()

testButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_SECURE_SETTINGS) == PackageManager.PERMISSION_GRANTED) { 
      Settings.Secure.putString(context.getContentResolver(), "sysui_nav_bar", valueToSave); 
     } else { 
      //Write secure Settings permission not granted 
      //Show instructions about how to grant it via ADB 
     } 
    } 
}); 
+1

謝謝你這麼多它工作得很好 – Smart