2010-07-27 18 views
6

Quiero verificar si mi aplicación está configurada como la aplicación predeterminada para las Intenciones que estoy manejando dentro de mi aplicación.¿Cómo comprobar si mi aplicación está configurada de manera predeterminada o no en Android?

Como ejemplo, más de una aplicación admite abrir un formato de archivo específico. Necesito hacer que mi aplicación sea una aplicación predeterminada de mi código. ¿Cómo es posible hacer que mi aplicación sea predeterminada (desde el código)? ¿Alguien puede ayudarme?

Al menos me gustaría comprobar esto en el inicio de mi aplicación y redirigir al usuario para completar cierta información si mi aplicación no está configurada como la predeterminada en el dispositivo.

+0

Defina lo que quiere decir con "es un valor predeterminado". – CommonsWare

+1

¿Quiere decir que tiene dos aplicaciones diferentes instaladas manejando la misma actividad? ¿Los "mensajes" integrados y "Handcent SMS" para manejar los servicios de mensajes cortos? Si el usuario ha configurado una aplicación predeterminada, ¿desea saber si es suya o no? ¿He entendido bien tu pregunta? –

+0

Descargo el archivo ics desde mi aplicación. Otra aplicación también puede descargar el archivo ics. Cuando el usuario intente abrir el archivo, el dispositivo Android listará la posible aplicación para realizar. Cuando el usuario seleccione mi aplicación para abrir el archivo ics en ese momento, obtendré algunos detalles del usuario (sobre el usuario). Si seleccionan mi aplicación de manera predeterminada, no preguntaré los detalles sobre el usuario. Para eso necesito verificar si mi aplicación es una aplicación predeterminada o no. Si es por defecto, abriré el archivo directamente; de ​​lo contrario, deseo obtener los detalles. sobre el usuario. – SRS

Respuesta

3

Por lo que sé, esto no es posible. El sistema maneja ese diálogo: su aplicación solo se lanzará si el usuario elige su aplicación de la lista.

Permitir que un comportamiento afecte la capacidad del usuario de controlar sus aplicaciones predeterminadas, y desde un punto de vista técnico significaría un proceso y su memoria debería asignarse a cada aplicación de la lista cada vez que apareciera tal lista .

0

Usted podría utilizar este método:

public static boolean isOurAppDefault(Context context) { 
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com")); 
    ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(browserIntent,PackageManager.MATCH_DEFAULT_ONLY); 
    String defaultBrowserPkg = null; 
    if (resolveInfo != null) { 
     if (resolveInfo.activityInfo != null) { 
      defaultBrowserPkg = resolveInfo.activityInfo.packageName; 
     } 
    } 
    return TextUtils.equals(context.getPackageName(), defaultBrowserPkg); 
} 

Es real de algún editor o navegador. En otro caso, use diferentes datos de Uri para la intención.

Cuestiones relacionadas