1

설치되지 않은 응용 프로그램에서 정보 (이름과 아이콘)를 가져 오려고합니다. 기본적으로 APK 파일을 가지고 있는데 아직 설치하지 않았지만 그 이름과 아이콘을 목록에 표시하고 싶습니다.응용 프로그램이 아닌 응용 프로그램의 정보

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. 
} 

문제를 그리고 그것은 나에게 loadIcon 및 loadLabel 지침에 NullPointerException이 제공된다

나는이 작업을 수행하려합니다.

Btw는의 receivedFilePath 문자열이

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

그리고 문자열로 전송이 receivedFilePath 파일의 이름이입니다 APK 파일의 파일 경로 ((안 응용 프로그램)가

답변

1

가 발견 비슷한 문제, 그것은 도움이되기를 바랍니다 :

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

감사합니다. 효과가있었습니다! 분명히 archiveInfo는 설치된 응용 프로그램을위한 것일뿐입니다. –

관련 문제