如何在安装应用程序时保存用户特定的数据?

时间:2014-12-19 19:11:53

标签: android

我的工作中已经要求以下内容:我需要开发一个连接到我们的某个Web应用程序并在设备中存储用户特定数据的Android应用程序,因此所述用户可以随时查看他们的数据需要它。问题是,其中一个要求是应用程序安装与用户绑定,并且必须自动发生(也就是说,以某种方式检测哪个用户正在下载应用程序并将他/她现有的用户ID从Web应用程序保存到下载/安装时的Android应用程序,无需用户登录。这让我想到了:有什么办法以某种方式获取用户ID /用户名/我需要的任何东西,从我的网络应用程序,在下载APK文件时,"附加"它到安装,可以这么说?请注意,这个Android应用程序不应该从Play商店安装,而是下载直接来自我们的网络应用程序。它也不是由任何同事在公司内部使用,而是由我们的客户使用,最终可能会成千上万,或者最终成千上万,所以每个人都要安装包含其数据的潜在用户是不可行的。

如果没有一种实用的方法可以做到,可以做到最接近它的是什么?

3 个答案:

答案 0 :(得分:2)

在我看来,你有几个不同的选择......

  1. 很难从您的帖子中看出来,但如果仅通过与您的同事(不使用Play商店)共享APK而仅在公司内部分发应用程序,那么这将非常简单简单地修改所需信息(ID /用户名等)并为想要该应用程序的每个人生成一个唯一的APK。或者,您可以只包含一个唯一的ID号,并在生成每个APK时跟踪谁拥有哪个ID。根据公司的规模和使用此应用程序的人数,这个解决方案可能从微不足道到不可能。这也是相当有限的,因为对应用程序的任何更新都需要您为拥有该应用程序的每个人生成一个新的APK。

  2. 第二种选择是使用某种识别方案为每个应用程序生成唯一ID,然后将该ID与用户信息相关联。为每个安装生成唯一ID有多种选择。这是一篇简短的文章,介绍了解决此问题的几种方法:http://android-developers.blogspot.com/2011/03/identifying-app-installations.html

  3. 第三个选项,我认为可能是最好的选择,不一定跟踪单个安装,而是在设备本地保存用户信息,然后在应用程序与Web应用程序连接时使用此信息。例如,您可以请求用户在Android应用程序启动时输入ID和密码,然后使用此信息验证Android应用程序连接到Web应用程序时的人员身份;没有正确的ID和密码,Android应用程序将无法访问Web信息,无论谁安装它。有关在应用程序中本地存储信息的大量信息:http://developer.android.com/guide/topics/data/data-storage.html

  4. 修改

    您也可以访问唯一的Android设备ID(Is there a unique Android device ID?),但也存在一些问题。

    您让我对您的问题感到好奇,因此我编写并测试了一种生成唯一ID的快速方法。下面的方法将通过获取设备的序列号并在序列号的开头和结尾添加0到100万之间的随机数来创建唯一的ID号。然后,它将此唯一编号写入一个简单的文本文件,您可以访问该文件并将其用作应用程序的唯一ID。此外,您可以在活动开始时调用此方法,并且由于方法检查是否存在文本文件,因此只会创建一次唯一ID ...

    public static void CreateInstallationID()
            {
                File log = new File("sdcard/AppInstallID.txt");
                /** Check to see if ID has already been created */
                if (!log.exists())
                {
                    try
                    {
                        /** Create file */
                        log.createNewFile();
                        BufferedWriter writer = new BufferedWriter(new FileWriter(log, true));
                        /** Create unique ID */
                        Random rand1 = new Random();
                        Random rand2 = new Random();
                        int iRandomNumber1 = rand1.nextInt((1000000 - 0) + 1) + 0;
                        int iRandomNumber2 = rand2.nextInt((1000000 - 0) + 1) + 0;
                        String sUniqueID = Integer.toString(iRandomNumber1) + Build.SERIAL +
                                Integer.toString(iRandomNumber2);
                        writer.append(sUniqueID);
                        writer.newLine();
                        writer.close();
                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();
                    }
                }
    
            }
    

    作为一个例子,当我执行这个方法时,我获得了一个名为" AppInstallID"的文本文件。阅读826225F12G4005DIE416255。您可以根据需要在唯一ID中添加或删除字段,以增加或减少复杂性。

    编辑2

    如果您执行此类操作,请确保在清单文件中添加写入外部存储的权限。

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

答案 1 :(得分:0)

我认为不可能将用户ID或某些想法转向apk durning下载。 我想只有一种可能是在安装apk用户登录服务后获取一些唯一ID并发送特定数据。 要么 您可以使每个apk都具有唯一ID,并将此应用程序发送给特定用户,但我认为这不是符合人体工程学的解决方案:-)。 顺便说一句 我不确定,但如果用户下载应用程序并安装hi必须启动此应用程序,然后她可以在后台工作,但如果你只安装(不开始),她将无法工作。

答案 2 :(得分:0)

根据我的建议=

下载应用程序后,用户输入了登录密码,应用程序应检查用户数据是否保存在手机中,如果没有然后给出一个显示“同步”的屏幕,并将所有数据从网络下载到本地存储。

否则继续正常的申请流程