2012-07-30 9 views
11

siguientes son mis problemas: -Lista de instalada la aplicación desde Google Play contra la cuenta de Google

  1. ¿Es posible obtener la lista de aplicaciones que un usuario ha instalado, en contra de su cuenta de Google a través de Google Play, mediante programación a través el uso de cualquier API? Tenga en cuenta que no estoy preguntando sobre la lista de aplicaciones actualmente instaladas en el dispositivo, sino sobre las que se han instalado en algún momento.

necesito una solución a lo anterior como estoy pensando en un escenario en mi aplicación, que es:

  • quiero dar mi aplicación para el usuario de forma gratuita durante los tres primeros meses, después de tres meses, si el usuario desinstala la aplicación y luego la instala de nuevo, quiero detectar a través de cualquier api (de Google Play) que el usuario ha instalado la aplicación por segunda vez (y no debe obtener ningún uso gratuito). Please note that I don't want to use any web service to store the account id & device id of the user at my side.
+0

Aquí es donde usted puede comenzar a buscar: http://code.google.com/p/android-market-api/ Esto también podría ser útil: http://stackoverflow.com/ preguntas/10661434/does-google-play-have-an-api – Ronnie

Respuesta

5

Para la opción 2, puede crear un archivo en la tarjeta SD. Esto permanecerá allí cuando el usuario se desinstale/instale. Pero el usuario siempre puede eliminar su archivo especial. A menos que haga algo a su favor, nunca está seguro de si el usuario ya utilizó su aplicación anteriormente.


Para estar completamente seguro, almacenar en línea: Usted tendrá que tener una base de datos muy simple que contiene una lista de device_id que se instala su aplicación. Además, más una página web que llena esta base de datos. En su aplicación descarga/abre esta página web que la página web llenará la base de datos.

Aplicación> WebClient (u otro) que abre http://www.example.com/registerDevice.php?device_id=. El sitio php llena el db.

Deberá verificar la base de datos si el dispositivo actual ya tiene instalada esta aplicación para poder trabajar/no trabajar. Puede hacerlo a través del mismo PHP y verificar la respuesta. Por ejemplo, podría devolver 'ok' o 'no está bien' o algo más.

+1

Este sería un método muy poco confiable para almacenar la información. La tarjeta SD puede ser formateada, reemplazada, el archivo borrado, etc. Aún más probable en un plazo de 3 meses. –

+0

Gracias por la respuesta @PoweRoy. Pero ¿puedes decirme qué es lo que tengo que hacer a mi lado? –

+0

@mice: de hecho, es muy poco fiable – RvdK

3

El método más simple es obtener la cuenta del usuario la primera vez que ejecuta la aplicación, y enviarle ese detalle. Cómo se puede hacer esto está bien documentado aquí: How to get the Android device's primary e-mail address

Tendrá que agregar otra línea de código para volver a consultar la base de datos en el primer inicio de la aplicación.

EDIT: Para una solución no web, sólo tiene que añadir un temporizador para el inicio de su aplicación:

schedule(TimerTask task, Date when) 

la tarea debe ser la adición de una ficha después del período de tiempo que desea dar, a la la memoria del teléfono con los detalles de la cuenta del usuario para la autenticación (vea la primera solución para obtener los detalles de la cuenta)

Por último, como se indica arriba, agregue una verificación a la memoria del teléfono para ese archivo particular para ver si el usuario ha usado la aplicación antes de.

El problema con cualquier tipo de autenticación que se basa en la memoria del teléfono es que las personas pueden quitar fácilmente el token, si pueden encontrarlo, y volver a utilizar la aplicación.

+0

Gracias @bernlim por la respuesta. Pero usted no ha conseguido mi punto de la cuestión que se escribe 'por favor que no quiero utilizar cualquier servicio web para almacenar el ID de cuenta y de los dispositivos de identificación del usuario en mi side.' –

+0

editado por usted! – bernlim

0

probar este dispositivo de aplicación específica:

PackageManager packageManager = getContext().getPackageManager(); 
List<ApplicationInfo> applications = packageManager.getInstalledApplications(
     PackageManger.GET_UNINSTALLED_PACKAGES); 
// retrieves some information about all applications (even uninstalled ones) 
// which have data directories 

Por supuesto, este método no funcionará si el usuario sustituye al dispositivo. Pero no necesita usar ningún servicio web.

Cuestiones relacionadas