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

  • Android ClickableSpan fängt das Klickereignis ab
  • Android ListView aktuelle Scroll Location Y Pixel
  • Bestimmen und binden Klick oder "Touch" Veranstaltung
  • Möglichkeit, Sms mit Sim1 oder Sim2 programmgesteuert zu senden
  • Gibt es eine Möglichkeit, Espresso-Test mit mehreren Testmethoden laufen zu lassen, aber nur eine Setup-Methode?
  • Öffnen Sie eine Aktivität oder ein Fragment mit Bottom Sheet Deep Linking
  •  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") 

  • Verwenden von android.jar im Java-Projekt - RuntimeException Stub?
  • Textview`s LinkMovementMethod blockiert das Listit-Touch-Event
  • Form Drawable Größe funktioniert nicht
  • Wie kann man die in der android Datenbank (SQLite) gespeicherten Daten anzeigen?
  • Android AutoCompleteTextView onItemSelectedListener nicht mit einer Bluetooth-Tastatur ausgelöst
  • Verwenden von AppCompat 'layout_behavior' mit '@ string / appbar_scrolling_view_behavior' wirft eine Ausnahme aus
  • 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.