adb shell设置在Android Oreo 8.0上放置安全的sysui_nav_bar命令如果没有root,则无法工作
我试图在Android Oreo上使用这套“命令集”,但我有一些问题。为了进行测试,我在Nexus 5x上使用了以下命令:adb shell设置在Android Oreo 8.0上放置安全的sysui_nav_bar命令如果没有root,则无法工作,android,shell,adb,Android,Shell,Adb,我试图在Android Oreo上使用这套“命令集”,但我有一些问题。为了进行测试,我在Nexus 5x上使用了以下命令: adb shell settings put secure sysui_nav_bar "space,recent;home;back,space" 所以我决定在我的应用程序中实现这个命令,并在没有root帮助的情况下尝试。在应用程序清单中,我添加了写入安全设置的权限: <uses-permission android:name="android.permissio
adb shell settings put secure sysui_nav_bar "space,recent;home;back,space"
所以我决定在我的应用程序中实现这个命令,并在没有root帮助的情况下尝试。在应用程序清单中,我添加了写入安全设置的权限:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
我的应用程序构建完成后,我在5x上运行它,并通过adb键入此命令以允许写入安全设置:adb shell pm grant com.customizer.smart.batterysavercustomizer android.permission.write_secure_settings
,此命令执行时没有错误。但当我试着点击我的“测试按钮”时,什么也没发生,androidmonitor中出现了0个错误
我做的最后一次尝试是使用root帮助。我编辑了预览命令按钮:
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命令的“自定义导航栏”应用程序在没有root的情况下如何工作呢?。
我接着说:您应该使用设置类而不是Runtime.getRuntime().exec()
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.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
}
}
});