2011-04-15 9 views

Respuesta

31
if (file.getPath().endsWith(".apk")) { 
     String filePath = file.getPath(); 
     PackageInfo packageInfo = context.getPackageManager().getPackageArchiveInfo(filePath, PackageManager.GET_ACTIVITIES); 
     if(packageInfo != null) { 
      ApplicationInfo appInfo = packageInfo.applicationInfo; 
      if (Build.VERSION.SDK_INT >= 8) { 
       appInfo.sourceDir = filePath; 
       appInfo.publicSourceDir = filePath; 
      } 
      Drawable icon = appInfo.loadIcon(context.getPackageManager()); 
      bmpIcon = ((BitmapDrawable) icon).getBitmap(); 
     } 
    } 

La línea más importante es appInfo.publicSourceDir = filePath;

Esto es un error. Ver http://code.google.com/p/android/issues/detail?id=9151

La comprobación nula packageInfo != null está allí en caso de que la .apk no se analice correctamente.

+0

gracias NKD ... funcionó como encanto ... :) –

+0

Esto debería aceptarse como la respuesta correcta ya que la solución propuesta por Varundroid NO funciona con los archivos apk no instalados. – jenzz

+0

@Jens totalmente de acuerdo contigo. La mejor respuesta siempre debe ser aceptada. Edité mi respuesta. Gracias por señalar el problema. Aclamaciones. – Varundroid

Cuestiones relacionadas