私はちょうど私が実行時のアクセス許可を必要とするコードの下2つのオプションのいずれかIの使用を持っているデバイスIDを取得するための最良のだろうか疑問android.permission.READ_PHONE_STATE
-
private String android_id = Secure.getString(getContext().getContentResolver(),
Secure.ANDROID_ID);
若しくは
第二に、私は、任意の実行時のアクセス許可が、識別するために(電子メールや電話など)のユーザデータをマッピングすることの必要性を必要としませんUUIDのオプションがあります。
String uniqueID = UUID.randomUUID().toString();
1を使用すると、なぜいただければ幸いです任意の提案。
感謝
アンドロイドID:
前記第1の起動時に、ランダム値が生成され、記憶されます。この値は、Settings.Secure.ANDROID_ID経由で入手可能です。これは、デバイスの寿命のために一定のままでなければならない64ビットの数値です。ANDROID_IDは、スマートフォンやタブレットのために利用可能ですので、一意のデバイス識別子のための良い選択です。
問題: 工場出荷時のリセットがデバイス上で実行された場合は、値が変更されることがあります。すべてのインスタンスが同じANDROID_IDを持っているメーカーからの人気が受話器を持つ既知のバグもあります。明らかに、溶液は、100%信頼できるものではありません。
UUID:
ほとんどのアプリケーションのための要件は、特定のインストールではなく、物理デバイスを識別するためにあるようUUIDクラスを使用する場合は、良い解決策は、ユーザーの一意のIDを取得します。
問題: UUID.randomUUID()メソッドは、特定のインストールの一意の識別子を生成します。あなたは、その値を格納するだけであり、ユーザーは、アプリケーションの次回起動時に識別されます。あなたはまた、彼は別のデバイス上でアプリケーションをインストールする場合でも、ユーザーのために利用可能な情報を保持するためにAndroidのバックアップサービスでこのソリューションを関連付けることを試みることができます。
結論:
Androidは簡単なことではない上、特定のデバイスを識別します。それを避けるために多くの良いの理由があります。最善の解決策は、UUIDソリューションを使用して、特定のインストールを識別するために、おそらくです。あなたは絶対に物理的に特定のデバイスを識別したい場合は、ANDROID_IDソリューションを使用しようとすることができます。100%の信頼性がなく、他のソリューションよりも優れていません。