Holen Sie sich die PID eines Prozesses, um es zu töten, ohne seinen vollen Namen zu kennen

Ich kodiere eine Android-Anwendung. Jetzt gehe ich zu einem Teil, wo die Anwendung einen Prozess töten sollte. Aber ich kenne seinen vollen Namen oder seine PID nicht. Ich kenne die Befehle:

android.os.Process.killProcess(Pid) 

und

  • Cordova WebView TIMEOUT ERROR mit Android
  • Eine laufende Benachrichtigung leise aktualisieren
  • Wie importiere ich selbst signiertes SSL-Zertifikat auf Volley auf Android 4.1+
  • RecyclerSpeicherspeicher / Wiederherstellungszustand zwischen Aktivitäten
  • Android-Formular-Validierungs-UI-Bibliothek
  • Ist es OK, addToBackStack hinzuzufügen und in einer Fragment-Transaktion zu ersetzen?
  •  android.os.Process.getUidForName("com.android.email") 

    Aber mein Problem ist, dass ich den ganzen Namen des Prozesses nicht kenne.

    Es ist ein nativer Code-Prozess, also nicht so etwas wie com.something.something

    Der Prozess ist /data/data/com.something.something/mybinary

    Aber es läuft mit Kommandos wie

     /data/data/com.something.something/mybinary -a 123 -b 456 

    Deshalb kann ich das nicht benutzen

     android.os.Process.getUidForName("/data/data/com.something.something/mybinary") 

  • Gibt es einen grafischen Überblick über alle Android-GUI-Elemente?
  • Android: Zeichnen Sie Kreis mit Text nach innen
  • Android - mit runOnUiThread, um UI-Änderungen von einem Thread zu tun
  • Android O API 26. Neu hinzugefügte Standortmethoden funktionieren nicht wie nötig
  • Wie man einen Fortschrittsspinner in android zeigt, wenn doInBackground () ausgeführt wird
  • Android Webview: Erkennung, wenn das Rendering beendet ist
  • 3 Solutions collect form web for “Holen Sie sich die PID eines Prozesses, um es zu töten, ohne seinen vollen Namen zu kennen”

    Sie können:

     ActivityManager manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> services = manager.getRunningAppProcesses(); String service1name = services[1].processName; 

    Sie können alle Paketennamen des laufenden Prozesses erhalten, überprüfen Sie, welche Sie töten möchten, wählen Sie diesen Prozess die Prozess-ID von service.pid.

    Und ruf:

     android.os.Process.killProcess(service.pid); 

    Ihr Prozessname ist '/data/data/com.something.something/mybinary' zuerst bekommen Prozess-ID der native Prozess läuft durch Parsing Ausgabe von oben und dann verwenden android.os.Process.killProcess (Pid)

      import org.apache.commons.exec.*; import java.io.IOException; public class NativeKillerRunnable implements Runnable { private static final Logger logger = LoggerFactory.getLogger(NativeKillerRunnable.class); @Override public void run() { String commandtoexec = "top -n 1 -m 100"; CommandLine cmdLine = CommandLine.parse(commandtoexec); DefaultExecutor executor = new DefaultExecutor(); try { PumpStreamHandler psh = new PumpStreamHandler(new LogOutputStream() { @Override protected void processLine(String s, int i) { s = s.trim(); //check for name of your binary process if(s.contains("mybinary")) { String[] strings = s.split(" "); android.os.Process.killProcess(Integer.parseInt(strings[0])); logger.info("killed mybinary process with pid = "+strings[0]); } } }); executor.setStreamHandler(psh); executor.execute(cmdLine); } catch (ExecuteException executeException) { logger.error("caught exception while killing mybinary process "+executeException.getMessage()); } } 

    }

    Du kannst so klingen:

     Process p = Runtime.getRuntime().exec("ps"); p.waitFor(); StringBuffer sb = new StringBuffer(); InputStreamReader isr = new InputStreamReader(p.getInputStream()); int ch; char [] buf = new char[1024]; while((ch = isr.read(buf)) != -1) { sb.append(buf, 0, ch); } HashMap pMap = new HashMap<String, Integer>(); String [] processLinesAr = sb.toString().split("\n"); for(String line : processLinesAr) { String [] comps = line.split("[\\s]+"); if(comps.length != 9) return; pid = Integer.parseInt(comps[1]); packageName = comps[8]; pMap.put(packageName, pid); //... } 

    Dann kannst du jdn.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.