2017-09-01 3 views
0

Android Oreoでこの「コマンドセット」を使用しようとしていますが、問題があります。テストのために私は私のネクサス5倍でこのコマンドを使用しています:adbシェル設定Android Oreo 8.0の安全なsysui_nav_barコマンドをrootなしで動かない

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経由して私は、安全な設定を記述できるようにするには、このコマンドを入力: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上でタップするとアプリがガーランドのroot権限を尋ね、それが動作します。しかし、同じ電話機で、同じadbコマンドを使用するアプリ「カスタムナビゲーションバー」アプリがルートなしで機能することはどうして可能でしょうか? 私はこれに続く:。あなたが)代わりにRuntime.getRuntimeの設定クラスを(使用する必要がありますguide on XDA

答えて

1

を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

関連する問題