当前位置:编程学习 > wap >>

来讨论一下Android里代码如何操作背景数据

各位大大们
由于最近需要编写一个需要操作背景数据的小应用,但查看sdk里的API之后,发现没有对应的API可供使用,无奈在网上百度谷歌了一下,发现有个隐藏API可以实现该功能:
android.net.ConnectivityManager.setBackgroundDataSetting(boolean setting)
但是这个隐藏的API在一般情况下是无法调用的,我曾经想到过使用反射机制来使用该方法,但很无奈,反射使用时报错说无此方法(不知是我使用的android版本原因还是其他原因,没有深入追究)。
后来一气之下在Ubuntu12.04下下载了android源码,全部版本,全部一共加起来10多G。(过程各种痛苦,我不想再来第二次了)
编译,花了几个小时。
完成后,我在源码目录下的out/.../../class.jar,把这个文件提取了出来,放在了eclipse工程目录下classpath里,然后,可以调用隐藏API了,可是,我发现。。

按照我之前的想法,直接使用ConnectivityManager.setBackgroundDataSetting()来关闭或者打开背景数据,但经过调试之后,发现ConnectivityManager.getBackgroundDataSetting()返回的值依然是true,很是困惑。

PS:已经在manifest.xml文件里添加了权限android.permission.CHANGE_BACKGROUND_DATA_SETTING

但是setBackgroundDataSetting(false)是无效的,getBackgroundDataSetting()依然是true。

请问有没有大大经历过这种情况,或者知道原因或者解决思路的,说出来大家讨论下呗。 android 背景数据 --------------------编程问答-------------------- http://bbs.csdn.net/topics/390342841

这个办法不知道能不能解决楼主的问题。 --------------------编程问答--------------------
引用 1 楼 TobyC 的回复:
http://bbs.csdn.net/topics/390342841

这个办法不知道能不能解决楼主的问题。


谢谢回答,我先看下。 --------------------编程问答--------------------
引用 1 楼 TobyC 的回复:
http://bbs.csdn.net/topics/390342841

这个办法不知道能不能解决楼主的问题。

这个办法我没有试过,我回去替换下试试。 --------------------编程问答--------------------
引用 3 楼 normanwss 的回复:
引用 1 楼 TobyC 的回复:
http://bbs.csdn.net/topics/390342841

这个办法不知道能不能解决楼主的问题。
这个办法我没有试过,我回去替换下试试。

    private void setBackgroundDataInt(boolean enabled) {
        if (getActivity() == null) return;
        final ConnectivityManager connManager = (ConnectivityManager)
                getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
        connManager.setBackgroundDataSetting(enabled);
    }
如果不成功,就要看其他的源码地方是否调了setBackgroundDataSetting --------------------编程问答--------------------
引用 4 楼 ConnectionUtils 的回复:
引用 3 楼 normanwss 的回复:引用 1 楼 TobyC 的回复:
http://bbs.csdn.net/topics/390342841

这个办法不知道能不能解决楼主的问题。
这个办法我没有试过,我回去替换下试试。
    private void setBackgroundDataInt(boolean enabled) {
        ……


我新建了个工程,只有一个按钮,就触发关闭背景数据,但是debug进去,发现getBackgroundDataSetting()依然返回true。。。。 --------------------编程问答-------------------- 就不应该call 这两个函数, 都已经 deprecated了。

    @Deprecated
    public boolean getBackgroundDataSetting() {
        // assume that background data is allowed; final authority is
        // NetworkInfo which may be blocked.
        return true;
    }

    /**
     * Sets the value of the setting for background data usage.
     *
     * @param allowBackgroundData Whether an application should use data while
     *            it is in the background.
     *
     * @attr ref android.Manifest.permission#CHANGE_BACKGROUND_DATA_SETTING
     * @see #getBackgroundDataSetting()
     * @hide
     */
    @Deprecated
    public void setBackgroundDataSetting(boolean allowBackgroundData) {
        // ignored
    }
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,