亚行壳设置把安全的sysui_nav_bar命令在Android奥利奥8.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
答
您应该使用设置类,而不是调用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
}
}
});
谢谢你这么多它工作得很好 – Smart