私は検索しましたが、これを見つけることができません.
アプリは、「Google Android」デバイスで実行されているか、AOSP デバイス (Kindle Fire など) で実行されているかをどのように推測しますか?
私は検索しましたが、これを見つけることができません.
アプリは、「Google Android」デバイスで実行されているか、AOSP デバイス (Kindle Fire など) で実行されているかをどのように推測しますか?
AccountManager
クラスgetAccountsByType()を使用してデバイス上の既存のアカウントを列挙し、com.google
目的のアカウント タイプとして渡すことができます。このタイプのアカウントがない場合は、それが AOSP デバイスであるか、ユーザーがまだ Google アカウントを作成していないことを意味します。
それだけでは不十分な場合は、クラスを使用して、 getPackageInfo()メソッドPackageManager
を使用して Google 固有のパッケージを照会できます。例- Google Play アプリ。com.android.vending
ただし、これらの方法のいずれも、ターゲット デバイスが AOSP を実行していることを保証できないことに注意してください。
これは些細なことではありませんが、ほとんどのアプリは気にする必要さえありません。その場合、通常は独自の機能が必要であることを意味するため、デバイスのラベルではなく、特定の機能が存在するかどうかを確認する方が簡単です。特定のパッケージ (Google Play など) の存在を確認することもできますが、それがないからといって自動的に Fire であるとは限りません。
Intent を使用して、マーケット URL を開くことができるかどうかを確認できます。
インテントのエクストラに関するドキュメントはこちらです。
インテントは次のようになります。
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=com.example.android"));
//you can use any package identifier for the check.
startActivity(intent);
} catch (ActvitiyNotFoundException anfe) {
//There's no market installed.
//So you can guess that you're not on a device with Google experience
}
この方法の欠点は、利用可能な場合、ユーザーが Play ストアに移動することです。