Android:启用/禁用自动同步和后台数据

Posted

技术标签:

【中文标题】Android:启用/禁用自动同步和后台数据【英文标题】:Android: Enable/Disable Auto Sync and Background Data 【发布时间】:2010-10-20 13:07:20 【问题描述】:

我想开发一个应用程序来禁用后台数据(android 1.5 中的新功能)和自动同步,然后启用 GPRS/EDGE 连接,反之亦然。

我想出了如何通过更改 APN 设置来启用/禁用 GPRS/EDGE。 (奇怪的解决方案。但是;Android 开发人员无法认为用户可能想要禁用 GPRS/EDGE)但是,我找不到启用/禁用自动同步和后台数据的方法。

我调查了 Android 代码,据我了解,同步操作是一个意图。所以,我想用 putExtra 达到意图并触发启用/禁用。但;我找不到正确的关键字。或者我完全错了。

解决这个问题的正确方法是什么?

【问题讨论】:

【参考方案1】:

在我的 HTC 梦想中,有一个复选框可以禁用自动同步。如果您愿意,我可以查找菜单树状结构,以便您可以在 Android 源代码中找到回调函数。但我很确定不能完全禁用自动同步。取消选中自动同步将阻止定时执行同步,但如果有可用的网络数据连接,则每次运行具有同步功能的应用时都会发生同步。

祝你好运。

编辑:

有两种方法可以获取您想要的信息。

首先,我认为您可以使用 android-sources/packages/apps/Settings/src/com/android/settings/Utils.java 中的代码来创建一个活动,该活动将征用意图的所有键,然后找到一个你想要的。

另一种方法是给制作切换设置应用程序 (http://smartphoneandroid.com/2008/12/28/toggle-setting-perfect-app-for-android-phone.html) 的人写一封很好的邮件,因为他显然找到了解决您问题的方法。他的电子邮件地址写在 android 市场上的应用程序表中。这里就不写了,如果你没有真正的安卓手机,我可以通过你的邮箱邮寄给你。

【讨论】:

如果能找到回调函数,我会很高兴的。我挖掘这个信息。然而;我什么也找不到。另一方面,我知道我无法阻止第三方应用程序使用 GPRS/EDGE。但是,我的主要目标是仅禁用与 Google 服务器的同步。因为;正如我观察到的,如果自动同步开启,Google 同步会使用我的大部分数据计划。【参考方案2】:

背景数据是secure setting,因此不能由用户应用程序更改。但请记住,这只是一个设置 - 它不是强制执行的。应用程序旨在阅读并尊重它,但我敢打赌有些不会。

【讨论】:

如果我发现只禁用自动同步,后台数据可能不是问题。【参考方案3】:

禁用自动同步

ContentResolver.setMasterSyncAutomatically(false);

启用自动同步

ContentResolver.setMasterSyncAutomatically(true);

你需要的权限是

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

【讨论】:

【参考方案4】:

ContentResolver 上的 setMasterSyncAutomatically() 应该这样做。检查:general-sync-settings-auto-sync-checkbox-programtically

【讨论】:

以上是关于Android:启用/禁用自动同步和后台数据的主要内容,如果未能解决你的问题,请参考以下文章

DMS 表空间启用和禁用自动调整大小功能

如何在Android上以编程方式启用或禁用GPS?

如何自动禁用 Swift Playground 的启用结果

使用对话框禁用 GPS (Android)

在 iOS 6 中启用自动布局,在 < iOS6 中禁用自动布局

在启用自动同步的同步后存储执行某些操作