睡眠模式下的Android互联网连接问题?

时间:2011-08-11 07:57:04

标签: android httpwebrequest connection sleep wakelock

我有一个服务Activity和一个线程。问题是当手机进入睡眠模式,线程没有发送http请求而我检查网络状态,如果它不连接我工作连接它但我得到“权限拒绝:写入安全设置需要android.permission.WRITE_SECURE_SETTINGS”错误。但我已将权限标记放在AndroidManifest.xml中。我也试试这个:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK , "TAG");
wl.acquire();

但这并不能解决我的问题。手机已经进入睡眠模式。这是我的checkNetwork代码:

private boolean checkNetwork(){
    try{
        Context context = getApplicationContext();
        ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = connectivity.getActiveNetworkInfo();
        if(info == null){
            connectivity.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);
            int status = connectivity.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "cmwap");
            NetworkInfo info1 = connectivity.getActiveNetworkInfo();
            return false;
        }
        if (info.getState() == NetworkInfo.State.CONNECTED )
            return true;
        return false;

    }catch(Exception ex){
        return false;
    }
}

公共类MainActivity扩展Service { .....

private Runnable httpThread = new Runnable() {

        public void run() {
//i send http request here
}
}

请帮助..

1 个答案:

答案 0 :(得分:2)

即使您的应用程序在android.permission.WRITE_SECURE_SETTINGS中请求AndroidManifest.xml,也不表示此权限将在运行时授予您的应用程序。

实际上,要授予此特定权限(android.permission.WRITE_SECURE_SETTINGS),您的应用程序必须使用系统证书进行签名。并且只有设备的供应商通常可以这样做(对于生产设备)。