5044


Androidで端末ごとにユニークなIDを持たせてサーバー側とやりとりする際に簡易的に利用者を識別したいです。事前の会員登録などはおこなわず、アプリケーション側で端末IDを取得(もしくは発番)してサーバーに送信したいです。  
一人の利用者が複数台の端末を使っているケースは考えなくて良いです(その場合は複数人が利用していると処理して良い)。  
どのように実装したら良いでしょうか？


CC BY-SA 3.0
2015-01-22T03:08:52.260
5029
2015-01-22T04:41:30.527
450
question
android
端末固有のIDを取得したい


今回の用途は利用者を識別したいということなので、user3009331 さんの回答にもある [Identifying App Installations |
Android Developers Blog](http://android-
developers.blogspot.jp/2011/03/identifying-app-installations.html)
という記事内で提案されている、以下のような UUID
を生成して保存しておく方法が良いのではないかと思います。ただし、当然ながら、アプリケーションの再インストールを行うと変わってしまうことに注意してください。また、ユーザーが端末を変更した場合も追随したいのであれば、なんらかのユーザー登録が必要になると思います。

[code]

    public class Installation {
        private static String sID = null;
        private static final String INSTALLATION = "INSTALLATION";
    
        public synchronized static String id(Context context) {
            if (sID == null) {  
                File installation = new File(context.getFilesDir(), INSTALLATION);
                try {
                    if (!installation.exists())
                        writeInstallationFile(installation);
                    sID = readInstallationFile(installation);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
            return sID;
        }
    
        private static String readInstallationFile(File installation) throws IOException {
            RandomAccessFile f = new RandomAccessFile(installation, "r");
            byte[] bytes = new byte[(int) f.length()];
            f.readFully(bytes);
            f.close();
            return new String(bytes);
        }
    
        private static void writeInstallationFile(File installation) throws IOException {
            FileOutputStream out = new FileOutputStream(installation);
            String id = UUID.randomUUID().toString();
            out.write(id.getBytes());
            out.close();
        }
    }
    
[/code]

ANDROID_ID や IMEI
など、端末固有のIDを取る方法もあると思いますが、プライバシーなどの問題が関係するので利用される場合は注意した方が良いと思います。

参考: [privacy/固定機種IDがもたらす問題 -
Android絵空事](http://synchack.com/memo/index.php?privacy%2F%B8%C7%C4%EA%B5%A1%BC%EFID%A4%AC%A4%E2%A4%BF%A4%E9%A4%B9%CC%E4%C2%EA)


CC BY-SA 3.0
2015-01-22T04:41:30.527
5044
2015-01-22T04:41:30.527
4575
5029
answer