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

3
我想开发一个应用程序,可以禁用Android 1.5中的后台数据(新功能)和自动同步,然后启用GPRS/EDGE连接,反之亦然。
我已经找到了通过更改APN设置来启用/禁用GPRS/EDGE的方法。(奇怪的解决方案。然而,Android开发人员无法想象用户可能想要禁用GPRS/EDGE)。但是,我找不到启用/禁用自动同步和后台数据的方法。
我调查了Android代码,并且据我所知,同步操作是一个意图。因此,我希望能够通过putExtra访问意图,并触发启用/禁用。但是,我找不到正确的关键字。或者也许完全错误。
解决这个问题的正确方法是什么?
4个回答

4
在我的HTC梦中,有一个复选框可以禁用自动同步。如果您希望,我可以查找菜单层次结构,以便您可以找到Android源代码中的回调函数是什么。但我很确定自动同步无法完全禁用。取消自动同步将防止按计时执行同步,但只要有任何网络数据连接,每次运行具有同步功能的应用程序都会发生同步。

祝你好运。

编辑:

获取所需信息有两种方法。

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

另一种方法是给制作 Toggle Setting 应用程序的人写一封友好的电子邮件(http://smartphoneandroid.com/2008/12/28/toggle-setting-perfect-app-for-android-phone.html),因为他显然已经找到了解决方案。他的电子邮件地址写在 Android 市场上的应用程序页面上。我不会在这里写出来,但如果您无法访问真正的 Android 手机,我可以将其发送到您的电子邮件地址上。

如果你能找到回调函数,我会非常高兴。我已经努力寻找这个信息了,但是什么都没找到。另一方面,我知道我无法阻止第三方应用使用GPRS/EDGE。但是,我的主要目的是只禁用与Google服务器的同步。因为,我观察到如果自动同步打开,Google同步会占用我的大部分数据流量。 - Ömer

2
禁用自动同步
ContentResolver.setMasterSyncAutomatically(false);

启用自动同步功能
ContentResolver.setMasterSyncAutomatically(true);

您需要的权限是:
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />

2

背景数据是一个安全设置,因此不能被用户应用程序更改。但请记住,这只是一个设置 - 它不是强制执行的。应用程序应该读取并尊重它,但我敢打赌有些应用程序没有这么做。


如果我能找到禁用自动同步的方法,后台数据可能就不是问题了。 - Ömer

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接