2017-09-01 62 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