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

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

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

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

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

【问题讨论】:

    标签: android synchronization gprs


    【解决方案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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-15
        • 1970-01-01
        相关资源
        最近更新 更多