Android:启用/禁用自动同步和背景数据

时间:2009-04-20 10:52:04

标签: android synchronization gprs

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

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

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

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

4 个答案:

答案 0 :(得分:4)

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

祝你好运。

编辑:

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

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

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

答案 1 :(得分:2)

后台数据是secure setting,因此用户应用程序无法更改。但请记住,这只是一个设置 - 它没有强制执行。应用程序旨在阅读并尊重它,但我打赌有些人不这样做。

答案 2 :(得分:2)

禁用AutoSynch

ContentResolver.setMasterSyncAutomatically(false);

启用AutoSynch

ContentResolver.setMasterSyncAutomatically(true);

您需要的权限是

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

答案 3 :(得分:1)

ContentResolver上的

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