2011-07-29 21 views
7

Estoy desarrollando una pequeña aplicación que muestra la aplicación instalada como una lista en una ruleta. Solo el nombre de la aplicación se muestra como valores de referencia. Cada vez que selecciono una aplicación de spinner, necesito recuperar el UID de la aplicación seleccionada. ¿Cómo puedo implementar la función?¿Cómo obtener el valor de uid de una aplicación de Android desde una lista que se muestra en una ruleta?

El siguiente es el código para obtener el nombre de la aplicación de la ruleta

appspinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View arg1, 
       int app_pos, long app_id) { 
      // TODO Auto-generated method stub 
      String app_selected=parent.getItemAtPosition(app_pos).toString(); 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 
      return; 
     } 
    }); 

La aplicación instalada se almacena en una lista utilizando la clase PackageManager y el uso de la clase packageinfo estoy recibiendo el nombre de la aplicación.

Respuesta

16

Deberá usar PackageManager para obtener la información del paquete sobre la aplicación que seleccione en la lista. No he hecho esto con un Spinner, pero estoy seguro de que debería funcionar igual que en mi ListView.

appspinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parent, View arg1, 
       int app_pos, long app_id) { 
     // TODO Auto-generated method stub 
     String app_selected=parent.getItemAtPosition(app_pos).toString(); 

     final PackageManager pm = getPackageManager(); 
     //get a list of installed apps. 
     List<ApplicationInfo> packages = pm.getInstalledApplications(
       PackageManager.GET_META_DATA); 
     int UID; 
     //loop through the list of installed packages and see if the selected 
     //app is in the list 
     for (ApplicationInfo packageInfo : packages) { 
      if(packageInfo.packageName.equals(app_selected)){ 
       //get the UID for the selected app 
       UID = packageInfo.uid; 
       break; //found a match, don't need to search anymore 
      } 

     } 

     //Do whatever with the UID 
     Log.i("Check UID", "UID is: " + UID);    

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 
     return; 
    } 
}); 

Es posible que desee ver cómo packageName devuelve el packageName para que pueda tratar de coincidir con lo que fue seleccionado.

Espero que esto lo guíe en la dirección correcta y lo ayude. Buena suerte.

+0

gracias por la sugerencia .. – Unnikrishnan

+2

tal vez añadir un 'romper;' después de encontrar un donante compatible para evitar procesos innecesarios :) – pablisco

+0

Gracias por la sugerencia @pablisco, he hecho la edición. – Wolfcow

Cuestiones relacionadas