Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

Android - problem z zapisem do pliku systemowego używając konta root.

$
0
0

Witam wszystkich, tworzę aplikację, której działanie jest bardzo proste. Ma ona za zadanie zmienić jasność wyświetlacza na wartość wpisaną w polu EditText - po wpisaniu interesującej nas wartości po wciśnięciu przycisku jasność zostaje zmieniona na podaną przez nas. Problem w tym, że za drugim razem po wpisaniu wartości i naciśnięciu przycisku, program nie może zapisać wartości do pliku, debugger wyrzuca błąd o następującej treści: "java.io.IOException: write failed: EBADF (Bad file number)". Proszę o pomoc, szukałem oczywiście jakichś informacji i do tej pory nie udało mi się naprawić tego problemu. Do pliku zapisuję używając instancji klasy java.lang.Process. Dzięki za poświęcenie kilku minut.

public class MainActivity extends AppCompatActivity {
    private Process rootProcess = null;

    private void getRootAccess() {
        try {
            rootProcess = Runtime.getRuntime().exec("su");
        }catch(IOException e) {
            Toast toast = Toast.makeText(this, "Could not get root access! Exiting.", 
Toast.LENGTH_LONG);
            toast.show();
            System.exit(1);
        }
    }
    private int getBrightnessValueFromEditText() {
        EditText brightnessInput = (EditText) findViewById(R.id.brightness_input_edtext);
        int brightnessValue = Integer.parseInt(brightnessInput.getText().toString());
        return brightnessValue;
    }
    private void writeBrightnessValueToAppropriateFile(int brightnessValue) {
        String targetFilename = "/sys/class/leds/wled/brightness";
        String commandToExecute ="echo " + Integer.toString(brightnessValue) + "> " + targetFilename;
        try {
            OutputStream outputToFile = rootProcess.getOutputStream();
            outputToFile.write(commandToExecute.getBytes());
            outputToFile.flush();
            outputToFile.close();
        }catch(IOException e) {
            Toast message = Toast.makeText(this, "Couldn't change the brightness!", Toast.LENGTH_LONG);
            message.show();
            e.printStackTrace();
        }
    }
    private void setBrightnessValue() {
        int brightnessValue = getBrightnessValueFromEditText();
        if(brightnessValue < 1) {
            Toast message = Toast.makeText(this, "You entered a wrong value!", Toast.LENGTH_LONG);
            message.show();
            //exit from function
            return;
        }
        writeBrightnessValueToAppropriateFile(brightnessValue);
    }
    private void setButtonsOnClickAction() {
        Button changeButton = (Button) findViewById(R.id.change_btn);
        changeButton.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               setBrightnessValue();
           }
        });
        //not programmed yet
        /*Button setToDefaultButton = (Button) findViewById(R.id.default_btn);
        setToDefaultButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });*/
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getRootAccess();
        setButtonsOnClickAction();
    }
    @Override
    protected void onDestroy() {
        rootProcess.destroy();
    }
}

 


Viewing all articles
Browse latest Browse all 21942

Trending Articles


TRX Antek AVT - 2310 ver 2,0


Автовишка HAULOTTE HA 16 SPX


POTANIACZ


Zrób Sam - rocznik 1985 [PDF] [PL]


Maxgear opinie


BMW E61 2.5d błąd 43E2 - klapa gasząca a DPF


Eveline ➤ Matowe pomadki Velvet Matt Lipstick 500, 506, 5007


Auta / Cars (2006) PLDUB.BRRip.480p.XviD.AC3-LTN / DUBBING PL


Peugeot 508 problem z elektroniką


AŚ Jelenia Góra