Ejecutar un comando shell a través de QProcess en la plataforma Android
No puedo ejecutar ningún comando a través de QProcess en la plataforma Android. Estoy utilizando la biblioteca Qt. ¿Puede alguien explicar cómo ejecutar comandos shell desde mi aplicación en la plataforma Android?
QProcess process(); process.execute("ls"); bool finished = process.waitForFinished(-1); qDebug() << "End : " << finished << " Output : " << process.errorString();
El proceso no finaliza si no especifico el tiempo de espera. Process.waitForFinished () devuelve false cuando se especifica timeout digamos 10000 ms.
- Seleccione el tipo de teclado de entrada para QLineEdit
- Qt5.1-android: Qt versión para mips que faltan en QtCreator
- Qt para android: cambia el icono de la aplicación
- Implementación de aplicaciones Android Qt 5.1
- ¿Por qué se utiliza un único modelo de subproceso para actualizar la interfaz de usuario como subproceso principal?
- No se puede construir Android APK en Qt Creator
- Empuje usando Parse en Qt5.5 para Android: NullPointerException en getCurrentInstallation
- Qt android, la nueva ventana qml no funciona correctamente
- cómo utilizar QtAndroid :: startActivity
- Qt para Andorid en OpenSuse 13.2
- No se muestra SVG en QML en Android
- ¿Dónde se encuentra el botón "Crear AndroidManifest.xml" en Qt Creator 3.3.0?
- Llamar a la actividad externa mediante una intención (explícita) de la aplicación Qt en Android - putExtra no funciona
Su código de ejemplo es defectuoso y no funcionará en CUALQUIER plataforma! ls
comando de ls
no es un exactable! Este comando se crea en un programa shell, por ejemplo bash
.
Otro error en tu código es que QProcess::execute
es una función estática . Así que la línea final no tiene impacto en el proceso que ha intentado iniciar.
Así que su código debe verse así:
QProcess process; process.start("bash", QStringList() << "-c" << "ls"); bool finished = process.waitForFinished(-1);
Está utilizando QProcess::execute()
que es una función estática. Citando la documentación de Qt : " Inicia el comando del programa en un nuevo proceso, espera a que termine ".
Así que lo que podría suceder en su código es:
QProcess process(); process.execute("ls"); // Start "ls" and wait for it to finish // "ls" has finished bool finished = process.waitForFinished(-1); // Wait for the process to finish, but there is no process and you could get locked here forever...
Hay 2 maneras de arreglar su código:
QProcess process(); process.start("ls"); // Start "ls" and returns bool finished = process.waitForFinished(-1); qDebug() << "End : " << finished << " Output : " << process.errorString();
o
QProcess::execute("ls");
- ¿Preferencias compartidas? Javax.crypto.BadPaddingException: bloque de pad corrompido sólo en algunos dispositivos
- Android BluetoothSocket.isConnected siempre devuelve false