2012-07-30 13 views
11

obserwuję moje problemy: -lista zainstalowanych aplikacji z Google Play Against kontem Google

  1. Czy to możliwe, aby uzyskać listę aplikacji, które użytkownik zainstalował, wbrew ich konta google poprzez Google Play, programowo poprzez korzystanie z jakichkolwiek api ?. Pamiętaj, że nie pytam o listę aplikacji aktualnie zainstalowanych na urządzeniu, ale tych, które zostały w pewnym momencie zainstalowane.

muszę rozwiązanie powyższego jak myślę o scenariuszu, w mojej aplikacji, która jest:

  • chcę dać mojej aplikacji dla użytkowników za darmo w ciągu pierwszych trzech miesięcy, po trzech miesiącach, jeśli użytkownik odinstaluje aplikację, a następnie zainstaluje ją ponownie, chcę wykryć za pośrednictwem dowolnego interfejsu API (od Google Play), że użytkownik zainstalował aplikację po raz drugi (i nie powinien uzyskać żadnego bezpłatnego użycia). 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

To gdzie można rozpocząć poszukiwania: http://code.google.com/p/android-market-api/ Może to być również pomocne: http://stackoverflow.com/ pytania/10661434/does-google-play-have-an-api – Ronnie

Odpowiedz

5

Dla opcji 2 można utworzyć plik na karcie SD. To pozostanie tam, gdy użytkownik odinstaluje/zainstaluje. Ale użytkownik zawsze może usunąć swój specjalny plik. O ile nie zrobisz czegoś u swojego boku, nigdy nie wiesz, czy użytkownik już korzystał z Twojej aplikacji.


Aby być całkowicie pewny, przechowywać go w Internecie: Trzeba będzie mieć bardzo prostą bazę danych, która przechowuje listę device_id że zainstalowano aplikację. Więcej informacji na stronie internetowej, która wypełnia tę bazę danych. W swojej aplikacji pobierasz/otwierasz tę stronę, którą strona wypełni DB.

Aplikacja> WebClient (lub inny), który otwiera się http://www.example.com/registerDevice.php?device_id=. Witryna php wypełnia bazę danych.

Twoja aplikacja będzie musiała sprawdzić bazę danych, jeśli bieżące urządzenie już zainstalowało tę aplikację do pracy/nie działa. Możesz to zrobić za pomocą tego samego php i sprawdzić odpowiedź. Możesz na przykład zwrócić "ok" lub "nie w porządku" lub coś innego.

+1

To byłaby bardzo niewiarygodna metoda przechowywania informacji. Sdcard może być sformatowany, zastąpiony, plik usunięty itp. Jeszcze bardziej prawdopodobne w ciągu 3 miesięcy. –

+0

Dzięki za odpowiedź @PoweRoy. Ale czy możesz mi powiedzieć "co mam zrobić u mojej strony". –

+0

@mice: rzeczywiście jest bardzo niewiarygodne – RvdK

3

Najprostszą metodą jest pobranie konta użytkownika przy pierwszym uruchomieniu aplikacji i przesłanie go do Ciebie. Sposób, w jaki można to zrobić, jest dobrze udokumentowany tutaj: How to get the Android device's primary e-mail address

Będziesz musiał dodać kolejną linię kodu, aby powrócić do bazy danych przy pierwszym uruchomieniu aplikacji.

EDIT: Do roztworu non-internetowej, wystarczy dodać czasomierza do początku aplikacji:

schedule(TimerTask task, Date when) 

zadanie powinno być dodanie token po okresie czasu chcesz dać, do pamięć telefonu z danymi konta użytkownika do uwierzytelniania (patrz pierwsze rozwiązanie po uzyskaniu szczegółów konta).

Wreszcie, jak powyżej, dodaj do pamięci swojego komputera potwierdzenie, aby sprawdzić, czy użytkownik użył aplikacji przed.

Problem z uwierzytelnieniem opartym na pamięci telefonu polega na tym, że ludzie mogą łatwo usunąć token, jeśli mogą go znaleźć, i ponownie użyć aplikacji.

+0

Dzięki @bernlim za odpowiedź. Ale nie ma sensu w pytaniu, które pisze: "Proszę pamiętać, że nie chcę używać żadnej usługi internetowej do przechowywania identyfikatora konta i identyfikatora urządzenia użytkownika u mego boku." –

+0

edytowane dla ciebie! – bernlim

0

Spróbuj tego urządzenia konkretną realizację:

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 

Oczywiście ta metoda nie zadziała, jeśli użytkownik zastępuje urządzenie. Ale nie musisz korzystać z żadnej usługi internetowej.

Powiązane problemy