11

以下は私の問題です:-

  1. ユーザーがインストールしたアプリケーションのリストを、Google Playを介して自分のGoogleアカウントに対して、任意のAPIを使用してプログラムで取得することは可能ですか?デバイスに現在インストールされているアプリのリストについては質問していませんが、ある時点でインストールされているアプリのリストについては質問していないことに注意してください。

アプリのシナリオを考えているので、上記の解決策が必要です。

  • 最初の3か月間はアプリを無料でユーザーに提供したいのですが、3か月後にユーザーがアプリをアンインストールしてから再度インストールした場合、ユーザーがアプリをインストールしたことをAPI(Google Playから)で検出したいと思います。 2回目(そして無料で使用するべきではありません)。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.
4

4 に答える 4

5

オプション2の場合、SDカードにファイルを作成できます。これは、ユーザーがアンインストール/インストールするときにそこに残ります。ただし、ユーザーはいつでも特別なファイルを削除できます。あなたがあなたの側で何かをしない限り、ユーザーが以前にあなたのアプリをすでに使用したかどうかは決してわかりません。


完全に確認するには、オンラインで保存します。アプリをインストールしたdevice_idのリストを保持する非常に単純なデータベースが必要です。さらに、このデータベースを埋め尽くすWebページ。アプリで、このWebページをダウンロードして開きます。このWebページはDBを埋めます。

App> http://www.example.com/registerDevice.php?device_id=を開くWebClient(またはその他) 。phpサイトがdbを埋めます。

動作する/動作しないために、現在のデバイスがすでにこのアプリをインストールしているかどうかをアプリで確認する必要があります。同じphpを介してこれを行い、応答を確認できます。たとえば、「ok」または「notok」などを返すことができます。

于 2012-08-01T10:13:20.457 に答える
3

最も簡単な方法は、ユーザーが初めてアプリを実行したときにそのユーザーのアカウントを取得し、その詳細をあなたに送信することです。これがどのように行われるかについては、ここで十分に文書化されています: Android デバイスのプライマリ電子メール アドレスを取得する方法

アプリの最初の起動時にデータベースにチェックバックするために、別のコード行を追加する必要があります。

編集: Web 以外のソリューションの場合は、アプリの開始時にタイマーを追加するだけです。

schedule(TimerTask task, Date when)

タスクは、与えたい期間の後に、認証のためにユーザーのアカウントの詳細を使用して電話のメモリにトークンを追加する必要があります (アカウントの詳細を取得するための最初の解決策を参照してください)

最後に、上記のように、その特定のファイルの電話のメモリにチェックバックを追加して、ユーザーが以前にアプリを使用したことがあるかどうかを確認します。

電話のメモリに基づくあらゆる種類の認証の問題は、ユーザーがトークンを見つけることができれば、トークンを簡単に削除して、アプリを再利用できることです。

于 2012-08-05T17:05:27.310 に答える
0

このデバイス固有の実装を試してください:

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

もちろん、ユーザーがデバイスを交換した場合、この方法は機能しません。ただし、Web サービスを使用する必要はありません。

于 2012-11-06T16:30:58.617 に答える