/*
* This file is part of the RootTools Project: http://code.google.com/p/roottools/
*
* Copyright (c) 2012 Stephen Erickson, Chris Ravenscroft, Dominik Schuermann, Adam Shanks
*
* This code is dual-licensed under the terms of the Apache License Version 2.0 and
* the terms of the General Public License (GPL) Version 2.
* You may use this code according to either of these licenses as is most appropriate
* for your project on a case-by-case basis.
*
* The terms of each license can be found in the root directory of this project's repository as well as at:
*
* * http://www.apache.org/licenses/LICENSE-2.0
* * http://www.gnu.org/licenses/gpl-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under these Licenses is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See each License for the specific language governing permissions and
* limitations under that License.
*/
package com.stericson.RootTools.internal;
import java.io.IOException;
import com.stericson.RootTools.RootTools;
import com.stericson.RootTools.execution.Command;
import com.stericson.RootTools.execution.CommandCapture;
import com.stericson.RootTools.execution.Shell;
import android.content.Context;
import android.util.Log;
public class Runner extends Thread {
private static final String LOG_TAG = "RootTools::Runner";
Context context;
String binaryName;
String parameter;
public Runner(Context context, String binaryName, String parameter) {
this.context = context;
this.binaryName = binaryName;
this.parameter = parameter;
}
public void run() {
String privateFilesPath = null;
try {
privateFilesPath = context.getFilesDir().getCanonicalPath();
} catch (IOException e) {
if (RootTools.debugMode) {
Log.e(LOG_TAG, "Problem occured while trying to locate private files directory!");
}
e.printStackTrace();
}
if (privateFilesPath != null) {
try {
CommandCapture command = new CommandCapture(0, false, privateFilesPath + "/" + binaryName + " " + parameter);
Shell.startRootShell().add(command);
commandWait(command);
} catch (Exception e) {}
}
}
private void commandWait(Command cmd) {
synchronized (cmd) {
try {
if (!cmd.isFinished()) {
cmd.wait(2000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}