私はルート化されたAndroidデュアルコア電話以上のコア管理アプリを作成しています...したがって、このアプリが行うことは /sys ディレクトリ内のファイルを変更することなので、ルートまたは「su」を使用する必要があります。だから私がやっていることは、コマンドchmod 7777 /sys/devices/system/cpu/cpu1/online
またはecho \"0\" > /sys/devices/system/cpu/cpu1/online
アプリからコマンドを実行すると、「No such file or directory」が返されるということですが、コードからコマンドをコピーして端末自体に貼り付けると、コマンドは完璧になり、私のポイントを完成させます...
コマンドを送信するために、私は自分用に作成したライブラリを使用しています。具体的には、 ROOT として必要なコマンドを実行する su(String) メソッドを使用しています。正常に動作します (SuperSU ログから確認できます)。 )、そして私は以前にそれを使用しました!
私が使用しているコードの一部を次に示します。
すべてを準備して開始する方法:
static public void ready_cores(){
Shells.Start();//Starts the root shell so it could be used with su(String) method
Shells.su("chmod 7777 /sys/devices/system/cpu/cpu3/online");//I have a dual-core so this one is normal to give me "No such file or directory"
Shells.su("chmod 7777 /sys/devices/system/cpu/cpu2/online");//This one too
Shells.su("chmod 7777 /sys/devices/system/cpu/cpu1/online");//This one should return no output and get executed successfully, more like in the terminal , but still returns NO such file or directory
}
ものを実行するボタンのMYオンクリックリスナー:
Executable.ready_cores();//This is the above method
D2.setOnClickListener(new View.OnClickListener() {//D2 is my button (obviously :p)
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Executable.disable_core(1);//It sends the following command as root : echo "0" > /sys/devices/system/cpu/cpu1/online
refresh(); //refreshes everything , don't bother with it , it causes no harm ...
}
});
私の Shells.su(String) メソッド:
static public void su(String ssu){//BTW , the variable psu is defined at Start() as : psu = Runtime.getRuntime().exec("su")
cmd = ssu + "\r";
try {
su = new DataOutputStream(psu.getOutputStream());
su.flush();
if (bool = true){
su.writeBytes(cmd+ "\n");
su.flush();
bool = false;
}else if (bool = false){
su.writeBytes(cmd+ "\n");
su.flush();
bool = true;
}else {
su.writeBytes("\n" + cmd+ "\n");
su.flush();
bool = true;
}
if (ssu.contains("echo") &! ssu.contains(">")){
su.close();
su = new DataOutputStream(psu.getOutputStream());
}
} catch (Exception ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
}
また、外部ストレージの読み取りと書き込みのアクセス許可も追加しました!