Установка уникального идентификатора при установке приложения - Android - PullRequest
1 голос
/ 07 февраля 2012

Я пытаюсь реализовать код, найденный ниже, чтобы я мог генерировать случайный идентификационный номер для пользователя прямо при установке приложения. У меня просто пара вопросов.

  1. Если я создаю для этого новый файл (Install.java), как мне получить доступ к идентификатору в другом классе?
  2. Как мне убедиться, что эта часть программы выполняется при первой установке приложения? Прямо сейчас программа запускается в моем классе Main.java (я новичок в Java). Будет ли он запускаться при установке приложения?

    public class Install {
    
    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();
    }
    }
    

Ответы [ 3 ]

2 голосов
/ 08 февраля 2012

Вот некоторый код, который я использую - не стесняйтесь адаптировать, как вы хотите ...

 public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    Log.d(Tag, "Yay onCreate!"); // sorry sometimes I'm a bit verbose with my logs...
    createVerifierStrings();
    .....


 private void createVerifierStrings() {
    SharedPreferences prefs = this.getSharedPreferences("Someprefstringreference", 0);
    String not_set = "NOTSET";
    String android_key;
    android_key = prefs.getString("id", not_set);

    if (android_key.equals(not_set)) {
        Log.d(Tag, "Creating keys for 1st time");
        android_key = generateRandomEnoughStuff();
        prefs.edit().putString("id", android_key).commit();
    }
    ......
1 голос
/ 08 февраля 2012

Вот запись в блоге от Тима Брея, в которой объясняется, что вы на самом деле должны делать ..

http://android -developers.blogspot.com / 2011/03 / идентифицирующий-приложение-installations.html

1 голос
/ 07 февраля 2012

Насколько я знаю, вы не можете запустить произвольный код сразу после завершения установки.

Я думаю, что самое близкое, что вы можете получить, - это проверить внутри вашего метода MainActivity onCreate (), который определяет, является ли это первым запуском (хороший способ проверить это, возможно, получить ссылку на ваш файл).и вызовите file.exists (), полученное логическое значение сообщит вам, нужно ли вам создавать файл UID.

...