Rau*_*auf 4 android android-intent sharedpreferences android-install-apk
我想在我的android应用程序中只运行一次特定的代码.共享首选项解决方案不是解决方案,因为当您转到应用程序管理器并执行清除数据时,共享首选项会被删除,因此应用程序将其视为新的全新安装.我甚至尝试过失败的Application类,它与共享首选项一样.任何帮助,除共享偏好和应用程序类别将不胜感激.
谢谢.
答案取决于"只有一次"的含义.
设置一个SharedPreference
.
如果用户清除数据,或卸载然后重新安装,则代码将再次运行.
将空文件(标记文件)保存在外部存储上的已知位置.
你可以这样做:
第二种方法很有前景:它可以抵御Clear Data并重新安装.
但是,使用存储可移动或无法安装的外部存储是很棘手的,如果存储不可用,我不确定您的后备是什么.(线索:快失败).
您也可能不相信您的用户不会(意外或故意)删除精心放置的文件.
我认为这超出了这个问题的范围.但是你应该从查看AccountManager文档开始,然后从那里开始.
好的,所以:
我们必须使用可以存储该设备状态的外部源来检查它; 我们称之为"服务器".
我们需要一个标识符来唯一地标识自己的服务器.
通常,您将生成一个UUID,并将其存储在某个地方.但我们不能相信任何存储选项.
所以我们需要从静态外部环境生成一个标识符.iPhone现已弃用的UDID就是这样,由各种硬件标识符生成.
复制此链接将是一个很好的开始,但根据您的安全许可,您可能想要自己创建.如果世界上的每个人都使用您的应用程序或与您的应用程序相同的算法,则可能会产生隐私隐患(这就是为什么Apple弃用UDID,以及为什么每个应用程序都应该使用自己的UUID).
无论哪种方式,这是一个非常大量的工程工作(包括服务器)(最好)一个边缘情况,所以我会避免它.
更糟糕的是,它将您的应用与拥有互联网连接联系起来,这取决于您的背景,可能是一件坏事.
此外,有根设备可以访问以更改任何或所有这些标识符.之后它有点哲学.
手动完成.说真的,在部署之前或之后的某个时间手动完成.
如果你需要选择一个获胜的设备,那么你需要一个服务器和一些识别设备的方法,如上所述.手动完成,然后挑选然后告诉胜利者.但这也超出了这个Android问题的范围.
归档时间: |
|
查看次数: |
2734 次 |
最近记录: |