1

Ich versuche, Informationen (Name und Symbol) von einer nicht installierten App zu erhalten. Grundsätzlich habe ich die APK-Datei, ich habe es noch nicht installiert, aber ich möchte seinen Namen und sein Symbol in einer Liste anzeigen.Anwendungsinfo einer nicht installierten App

Ich versuche, dies zu tun:

public void getReceivedApps() { 
    packageManager = getPackageManager(); 
    System.out.println("TRANSFER-RECORDActivityThe received filePath is : " + receivedFilePath); 

    PackageInfo packageInfo = packageManager.getPackageArchiveInfo(receivedFilePath, PackageManager.GET_GIDS); 
    System.out.println("TRANSFER RECORD ACTIVYT : O TO STRING TO PACKAGE INFO : " + packageInfo.toString()); 
    ApplicationInfo applicationInfo = packageInfo.applicationInfo; 
    Log.d(this.getClass().getName(), "packaginf0 : " + applicationInfo.toString()); 
    String appName = applicationInfo.loadLabel(packageManager).toString(); 

    System.out.println("TRANSFER RECORD ACTIVITY : THE APPNAME IS : " + appName); 
    Drawable icon = packageManager.getPackageArchiveInfo(receivedFilePath, PackageManager.GET_GIDS).applicationInfo.loadIcon(packageManager); 
    //then add it to a list. 
} 

das Problem und es mir eine Nullpointer im LoadIcon und loadLabel Anweisungen gibt.

Btw, die receivedFilePath Zeichenfolge, die den Dateipfad zu dieser apk-Datei hat (die

ist
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/"+getIntent().getStringExtra("receivedFilePath");) 

Und das receivedFilePath als String gesendet, um den Namen der Datei (nicht die app)

Antwort

1

Gefunden ein ähnliches Problem, hoffe, es hilft:

String APKFilePath = "mnt/sdcard/myapkfile.apk"; //For example... 

PackageManager pm = getPackageManager(); 
PackageInfo pi = pm.getPackageArchiveInfo(APKFilePath, 0); 

// the secret are these two lines.... 
pi.applicationInfo.sourceDir  = APKFilePath; 
pi.applicationInfo.publicSourceDir = APKFilePath; 
// 

Drawable APKicon = pi.applicationInfo.loadIcon(pm); 
String AppName = (String)pi.applicationInfo.loadLabel(pm); 

REF: Get apk file icon, version, name

+1

Danke, es hat funktioniert! Anscheinend ist die archiveInfo nur für installierte Apps –

Verwandte Themen