GithubHelp home page GithubHelp logo

Comments (28)

scola avatar scola commented on May 28, 2024

@ sdandroid 如果你的手机有 google play service 同时手机登录了 google 账户, 翻墙梯子没问题的话, 会同步到 google calendar

from birthday.

sdandroid avatar sdandroid commented on May 28, 2024

@scola 不是同步到日历,是app data 同步到 google account。这样可以恢复数据。

from birthday.

scola avatar scola commented on May 28, 2024

@sdandroid 应用数据可以同步到 google 账户, 有这样的 api?

from birthday.

sdandroid avatar sdandroid commented on May 28, 2024

@scola 有的,看看 https://developer.android.com/guide/topics/data/backup.html 这个行不行

from birthday.

scola avatar scola commented on May 28, 2024

@sdandroid 看了那个文档, 好像需要 GMS 支持, 国行手机估计无福享用了

from birthday.

xuefer avatar xuefer commented on May 28, 2024

我的建议是直接用联系人的生日即可. 联系人统一保存阳历生日. 由谷歌去实现联系人同步

from birthday.

scola avatar scola commented on May 28, 2024

@xuefer 那不是又要申请一个联系人的权限,权限申多了,隐私风险,所以一直都尽量简单

from birthday.

xuefer avatar xuefer commented on May 28, 2024

软件实现是简单了, 用户就麻烦了. 结果反倒有另外的思路说要同步到谷歌云什么的 又纠结翻墙问题. 实际上如果跟联系人同步这些都不是问题, 而且未必是谷歌账号 别的账号都可以

很明显在软件里用到联系人的权限就没什么盗隐私可以怀疑. 不像某个奇葩搜狗输入法还用到定位权限, 他们还特意在平时弹出个提醒要用户允许, 而不是真的需要的时候才提醒(比如在下载细胞词库的时候想知道用户在哪儿自动把城市排在前面)

而且新的 sdk 可以动态申请权限, 用户可以不给权限嘛. 就是你代码写起来麻烦多了

from birthday.

scola avatar scola commented on May 28, 2024

@xuefer 一直以来谢谢大家的建议,但是很多东西都必须要有取舍
比如最初这个 app 的版本没有年龄信息, 后来很多用户要求加上年龄, 于是某个版本加上了
这两天又有用户说不需要年龄,不知道哪年生,要求去除年龄,或者增加一个选项由用户选择

现在我觉得 @sdandroid 提到的备份用户数据,这个比较重要,我一直也在考虑

from birthday.

xuefer avatar xuefer commented on May 28, 2024

如果不知道哪年生的话, 确实在联系人里记录阳历压根没法计算出农历, 只能直接记录农历(如果知道). 这点也是算法技术上逻辑上不可能用联系人记录来实现的

感谢你的 app 贡献

from birthday.

scola avatar scola commented on May 28, 2024

@sdandroid 我尝试了 https://developer.android.com/guide/topics/data/keyvaluebackup.html
这种方法备份, 在恢复数据的时候有错误, 按理使用这种方法不用上传到 google play 就能调试吧
也不知道是不是我手机 rom 的问题, 我用的三星手机调试的

12-05 08:46:42.899 E/BackupManagerService( 987): Error finishing restore

12-05 08:46:42.899 E/BackupManagerService( 987): java.lang.NullPointerException: Attempt to read from field 'java.util.Set gxu.d' on a null object reference

12-05 08:46:42.899 E/BackupManagerService( 987): at android.os.Parcel.readException(Parcel.java:1552)

12-05 08:46:42.899 E/BackupManagerService( 987): at android.os.Parcel.readException(Parcel.java:1499)

12-05 08:46:42.899 E/BackupManagerService( 987): at com.android.internal.backup.IBackupTransport$Stub$Proxy.finishRestore(IBackupTransport.java:819)

12-05 08:46:42.899 E/BackupManagerService( 987): at com.android.server.backup.BackupManagerService$PerformUnifiedRestoreTask.finalizeRestore(BackupManagerService.java:7980)

12-05 08:46:42.899 E/BackupManagerService( 987): at com.android.server.backup.BackupManagerService$PerformUnifiedRestoreTask.execute(BackupManagerService.java:7361)

12-05 08:46:42.899 E/BackupManagerService( 987): at com.android.server.backup.BackupManagerService$BackupHandler.handleMessage(BackupManagerService.java:770)

12-05 08:46:42.899 E/BackupManagerService( 987): at android.os.Handler.dispatchMessage(Handler.java:102)

12-05 08:46:42.899 E/BackupManagerService( 987): at android.os.Looper.loop(Looper.java:135)

12-05 08:46:42.899 E/BackupManagerService( 987): at android.os.HandlerThread.run(HandlerThread.java:61)

12-05 08:46:42.899 I/BackupRestoreController( 987): restoreFinished for 0

12-05 08:46:42.899 I/BackupManagerService( 987): Restore complete.

from birthday.

sdandroid avatar sdandroid commented on May 28, 2024

@scola 我没开发过android,你上传一个apk,我来试试,我是nexus。

from birthday.

scola avatar scola commented on May 28, 2024

@sdandroid 先报告一下你目前用的 app 版本
怕损坏了你现有的 app 数据

from birthday.

xuefer avatar xuefer commented on May 28, 2024

话说现在这个 app 已经用到 Contacts 权限了. MM 下就有勾选这个权限

from birthday.

scola avatar scola commented on May 28, 2024

@sdandroid 还有就是你的google calendar 创建了 Lunar Birthday 这个 日历了没有

from birthday.

scola avatar scola commented on May 28, 2024

@xuefer 嗯, 需要搞一个运行时权限, 下一个版本加,针对6.0以上版本

from birthday.

sdandroid avatar sdandroid commented on May 28, 2024

@scola 1.9.2 有创建这个日历

from birthday.

xuefer avatar xuefer commented on May 28, 2024

我是说已经有用到联系人权限了, 看麻烦度, 心情好的时候想做的话就做上存取联系人生日的功能吧
概括下几个细节

  1. Google API 看起来很酷. 但是很慢/需要软件联机去操作. 正规的做法是在 system Accounts 里添加个账号并且实现 Sync (adapter?). 现在没有 Account 里的 Sync, 由 app 来 sync, 一旦关掉软件就不同步了. 网络不好/离线状态, 代码再丰富再 geek, 都不如 Calendar Provider 更简单/有问题找 google account 设置

  2. app 自己存储生日记录. 脱离联系人资料维护一套. 用户角度来说使用略微麻烦. 已经保存了十几个好友的生日又要重新设置一遍了. 从程序角度来说, 要想不设置/保存年份, 在联系人里又没法记录. 没了年份就必须额外记录这是农历还是阳历生日, 因为有了年份可以统一记录成阳历

如果不考虑缺少年份的情况也不考虑开发麻烦的话. 最傻瓜式的还是联系人里保存生日之后, 同时出现日历里阳历/农历生日. (谷歌有个自动的 Birthdays 日历, 这个app负责实现个"自动"的农历生日即可了)

from birthday.

scola avatar scola commented on May 28, 2024

@sdandroid 测试这个需要安装新app,然后会自动备份app数据,再卸载app 重装, 如果有问题的话你的 数据就都没有了, 如果你的手机root 了的话, 倒是有别方法先备份一下
https://www.dropbox.com/s/f43griwiggzu4di/birthday-release-1.9.2.apk?dl=0

from birthday.

scola avatar scola commented on May 28, 2024

@xuefer Calendar Provider 这个已经实现了
https://github.com/scola/birthday/blob/master/app/src/main/java/io/github/scola/birthday/BirthdayListProviderFragment.java

从联系人读取的话有个问题是,很多人注册 google 的时候生日是随意填写的,或者不记得年份,或者不知道用户填写的是农历还是阳历,所以这个真不好弄

from birthday.

sdandroid avatar sdandroid commented on May 28, 2024

@scola 没有恢复。在google drive 也没看到这个应用。

from birthday.

scola avatar scola commented on May 28, 2024

@sdandroid 我这里也是不恢复,目前没找到原因,android 还提供了另一种备份的方法
https://developer.android.com/guide/topics/data/autobackup.html

不过需要 6.0 以上才支持, 所以很多用户用不了。。。
你的android 版本是多少?

from birthday.

sdandroid avatar sdandroid commented on May 28, 2024

android 7

from birthday.

xuefer avatar xuefer commented on May 28, 2024

我看到实现代码了. 但是也看到右上角的图标转啊转, 转好久提示 [Error] Closed 跟 [Error] Unexpected stream close 以及如果关掉 wifi 会提示 Unable to resolve www.googleapis.com 什么的. 离线的时候软键修改生日日期, 日历里并没有更新记录

from birthday.

scola avatar scola commented on May 28, 2024

@xuefer 因为代码判断了你之前使用了 google calendar api, 所以就一直 使用 api, 之前只支持那种方式, 如果新安装的话 都使用 provider, 你可以清除一下数据试试, 1.9.2 版本

这样做是怕影响老用户升级版本

https://github.com/scola/birthday/blob/master/app/src/main/java/io/github/scola/birthday/BirthdayListActivity.java

from birthday.

scola avatar scola commented on May 28, 2024

@sdandroid 这个问题应该已经解决了,android 每个版本的备份策略都可能不一样,为了省电考虑,有的一天备份一次,有的一周备份一次,不是应用数据改变实时备份的,所以我先上传一个版本,大家帮忙测试反馈吧,可能需要一段时间之后用别的手机安装,登录同一个google 账号,才能看到效果,手机设置里面的备份与恢复需要打开,恢复的时候需要联网,翻墙正常,心累。。。

手动触发备份
adb shell bmgr backup io.github.scola.birthday
adb shell bmgr run

from birthday.

sdandroid avatar sdandroid commented on May 28, 2024

@scola 现在app 删除一条记录,对应日历里面的记录会自动删除吗?

from birthday.

scola avatar scola commented on May 28, 2024

@sdandroid 会的, 这个功能一直都有

from birthday.

Related Issues (14)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.