Header
Listare i processi in esecuzione su Android
in: Android  So/Code: Android Data: 15/05/2018
Ora: 15.07:10
Articolo visualizzato: 540 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

59 giorni fa

 [EN] Last Articles

 Siti Amici

Visita il Blog Roll
Contattaci! Diventa nostro amico!



 Hot Downloads

3756

 Categorie

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

 Code

11
11
3
6
2
24
1
7

 Games

19
45
13

 GUIDE


 Novità Downloads

62
57
3756

 Tags Cloud

4 scontro virtualizzare iphone settimana band speciali dropbox sky google protoni rock iphone di settimana utente box,virtual ore gb spazio



 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.098 secondi. Geek-Blog.it