2012年7月25日水曜日

Google Playからインストールしたアプリか否かをチェックしたいが…

色々と調べた結果、Google Playかそれ以外かでインストール元を判断する
方法がないという事が分かった。OSからは署名されたアプリとしてしか
認識されておらず、内部でフラグ管理もされていない。

ただ以下の条件であれば、Google Playに登録されているアプリを
インストールしたかどうかだけは判断できるようだ。
・Google Playがインストールされている。
・ネットワーク通信可能な状態にある。
・アプリのパッケージ名が分かっている。

つまり、任意のアプリのパッケージ名をクエリとして、Google Playに問い合わせて
ページが存在すれば登録しているアプリをインストールしたものと判断できる。
下記リンク先にヒントがあるので参照して欲しい。

■ Check if app available on Android Market
http://stackoverflow.com/questions/7516887/check-if-app-available-on-android-market

■ check weather app is live on market or not?
http://stackoverflow.com/questions/11389403/check-weather-app-is-live-on-market-or-not

しかしこの方法でもGoogle Playかそれ以外かの判断はできない。
自分のアプリに限定した話となるが、下記リンクのように判別用キーを
アプリに署名して判断する事ならできる。

■ Detect if app was downloaded from Android Market
http://stackoverflow.com/questions/986627/detect-if-app-was-downloaded-from-android-market

ここまでしてインストール元を区別して何かしたいかと言ったら
ほとんどないかもしれないが、備忘録として記載しておく。


<余談>
Xperia acro HDのXperia標準ホーム上でアプリを共有する時、上記の方法で
Google Playに登録されているか否かを判断しているようだ。
例えばtwiccaを共有する場合は共有先の選択画面が表示されて、
プリインストールのカメラアプリならば「このアイテムは共有できません」
というメッセージが表示されて共有できないようになっている。
また、ネットワーク通信を切った状態で共有しようとすると「通信エラー」
というメッセージが表示されて共有が全くできない事から、まさに
Google Playと通信して判断している事を裏付けている。

0 件のコメント:

コメントを投稿