Header
Listare i processi in esecuzione su Android
in: Android  So/Code: Android Data: 15/05/2018
Ora: 15.07:10
Articolo visualizzato: 146 volte

Oggi mi sono imbattuto nel porting di un codice per renderlo compatibile per Android 7, quindi nougat, da versione precedenti. Durante questa fase ho scoperto che dal SDK 25 in poi non vi è più la possibilità di listare tramite il listFiles della /proc .

Questo è avvenuto per motivi di sicurezza restringendo maggiormanete il raggio d'azione che differenzia Android da iOS. ( non di sicurezza sia ben inteso ) Il codice che vi incollo è quello relativo prima della versione SDK 25.

Questa funzione mi è utile per capire e recuperare il pid di un processo in background partendo dal suo nome. Resta ancora valido dalle versioni 25 in poi ma è ristretto ai permessi di lettura dell'utenza che esegue l'applicazione, quindi non listerà tutti i processi.

 

public static List pidof(String str) {
        List < String > listOfPid = new ArrayList();
        for (File file : new File("/proc").listFiles()) {
            if (!file.isFile()) {
                File file2;
                if (Build.VERSION.SDK_INT < 25) {
                    file2 = new File(file.toString() + "/cmdline");;
                }else {
                    file2 = new File(file.toString() + "/comm");
                }
                if (file2.canRead()) {
                    try {
                        BufferedReader bufferedReader = new BufferedReader(new FileReader(file2), 8192);
                        while (true) {
                            String readLine = bufferedReader.readLine();
                            if (readLine == null) {
                                break;
                            } else if (readLine.toString().contains(str.toString())) {
                                listOfPid.add(file2.getPath().split("\/")[2].toString());
                            }
                        }
                        bufferedReader.close();
                    } catch (IOException e) {
                    }
                } else {
                    continue;
                }
            }
        }
        return listOfPid;
    }

In alternativa, parliamo sempre di dispositivi con root, è possibile creare un piccolo script in sh:

sudo -c 'pidof nomeprocesso'

Salvarlo per esempio nella folder files della nostra app dandogli i permessi corretti tramite adb e successivamente richiamarlo tramite getRuntime().exec() Non so se esistano altri metodi validi e funzionali nel caso mi commentate suggerendomi?

Grazie a tutti!

Salutoni

GuiZ

Commenti Commenti (0) | User Autore: Guido Camerlingo (Guiz)
Tags: android ps list process /proc comm listare processi background android 7 nougat pidof nome processo pid name





Articoli Correlati
Listare i processi in esecuzione su Android
Windows - Utilità di Pianificazione impostare percorso di esecuzione
Nintendo 3DS - Fatal Error
Power Manager 4 per Mac
Prepariamo Eclipse per sviluppare su android

Commenti

Scrivi Commento
Codice Verifica

Commento massimo 5000 caratteri.(Tutti i campi contrassegnati da * sono obbligatori).

   

Ricerca

Glossario Naviga nel nostro glossario!
Scopri il gergo dei Geek!


 ULTIMI ARTICOLI


 [EN] Last Articles

 Siti Amici

Visita il Blog Roll
Contattaci! Diventa nostro amico!



 Amazon


 Hot Downloads

3736

 Categorie

85
163
57
87
13
2
20
36
1
2
5
5
128
7
24
15
58
45

 Code

11
11
3
5
2
23
1
7

 Games

19
45
13

 GUIDE


 Novità Downloads

61
54
3736

 Tags Cloud

raggi prodotti offline come iso hacker iso fermi utilizzano attacco folder trailer megavideo fbi megavideo come online raggi gamma



 CopyRight

Valid XHTML 1.0 Transitional CSS Valido! [Valid RSS] Creative Commons License


Geek-Blog by Flavio Mandato, Giuseppe Vaccaro, Guido Camerlingo, Stefano Natale, Domenico Cavallo is licensed under a Creative Commons Attribuzione-Non opere derivate 2.5 Italia License.
Based on a work at www.geek-blog.it.
Permissions beyond the scope of this license may be available at http://www.geek-blog.it/

Disclaimer - Responsabilità - Pagina generata in 0.117 secondi. Geek-Blog.it