在应用程序安装时设置唯一ID - Android

时间:2012-02-07 14:15:16

标签: java android install uuid

我正在尝试实现下面的代码,这样我就可以在安装应用程序时为用户生成随机ID号。我只有几个问题。

  1. 如果我为此创建一个新文件(Install.java),如何在另一个类中访问该ID?
  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 个答案:

答案 0 :(得分:2)

这是我使用的一些代码 - 随意适应......

 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 :(得分:1)

据我所知,在安装完成后,您无法立即运行任何代码。

我认为你可以得到的最接近的是在MainActivity onCreate()方法中进行检查,确定这是否是第一次运行(检查这可能是获取对文件和调用文件的引用的一种好方法) .exists(),结果布尔值会告诉你是否需要创建你的UID文件。

答案 2 :(得分:1)

以下是来自Tim Bray的博客文章,其中解释了您实际应该做的事情。

http://android-developers.blogspot.com/2011/03/identifying-app-installations.html