2013-06-06 12 views
5

Voglio ottenere il nome esatto del file di un programma se conosco già il nome del pacchetto dell'apk di destinazione. Ad esempio, se conosco il nome del pacchetto del mio apk, che è com.packagename, come posso ottenere il percorso esatto e il nome del file di quel pacchetto? A proposito, non voglio ottenere solo la mia posizione di apk, voglio la posizione di qualsiasi nome di pacchetto che applico. SystemTuner pro è in grado di farlo, quindi so che è possibile, ma non so come.Come posso ottenere il nome e il percorso del file apk a livello di programmazione?

Grazie ragazzi!

risposta

4

PackageManager.getPackageInfo() restituisce informazioni sul pacchetto e il campo PackageInfo.applicationInfo ha richiesto informazioni sull'applicazione.

+2

Nota che nelle versioni Android più recenti o future i file apk di destinazione scoperti potrebbero non essere più accessibili da altre app di terze parti. –

3

Bene, vorrei segnare Yuri come risposta, ma sapevo già di quella roba. Così sono andato attraverso ogni opzione dal PackageManager.ApplicationInfo e ho trovato .publicSourceDir

così una risposta completa con il codice per la mia domanda sarebbe

PackageManager pm = getPackageManager(); 
    try { 
     ApplicationInfo ai = pInfo.getApplicationInfo(<packageName here>, 0); 
     String sourceApk = ai.publicSourceDir; 
    } catch (NameNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

Quindi grazie ancora ragazzi, ha ottenuto il mio cervello goin ancora una volta Amore StackOverflow!

+1

Se "sapevi già di quella roba" potresti averlo detto nella tua domanda e ottenuto una risposta più specifica a ciò che non sapevi. –

+0

Beh, ho detto che sapevo come ottenere il nome del pacchetto .. mi dispiace .. – Seth

+0

Seith, hai chiesto il nome esatto del file di un programma, e il percorso esatto e il nome del file del pacchetto. Considerando questo, ApplicationInfo è stata la migliore risposta che potessi pensare, non potrei essere più precisa :) – Y2i

3
/** 
* Get the apk path of this application. 
* @param context any context (e.g. an Activity or a Service) 
* @return full apk file path, or null if an exception happened (it should not happen) 
*/ 
public static String getApkName(Context context) { 
    String packageName = context.getPackageName(); 
    PackageManager pm = context.getPackageManager(); 
    try { 
     ApplicationInfo ai = pm.getApplicationInfo(packageName, 0); 
     String apk = ai.publicSourceDir; 
     return apk; 
    } catch (Throwable x) { 
    } 
    return null; 
} 
+0

Ragazzi, ho visto questo downvoted. Funziona ancora su Androidi moderni? – 18446744073709551615

Problemi correlati