2011-08-11 149 views
2

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

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扩展服务{ .....

private Runnable httpThread = new Runnable() { 

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

请帮助..

回答

2

即使你的应用程序中AndroidManifest.xml要求android.permission.WRITE_SECURE_SETTINGS,它并不意味着此权限将在运行时授予您的应用程序。

事实上,对于这个特定的权限(android.permission.WRITE_SECURE_SETTINGS)获批,您的应用程序必须与系统证书签名。只有设备的供应商通常可以做到这一点(用于生产设备)。

+0

所以是不可能给我吗?我能做什么?我的应用程序不需要睡眠模式_? –

+0

在最一般的情况下你的应用程序无法控制连接。它只能在连接可用或丢失时作出反应。这是Android和用户的业务,允许在睡眠模式下进行联网。 – inazaruk

+0

那么为什么我的手机进入睡眠模式?我已经使用电源管理器和唤醒锁类。我如何让睡眠模式的网络? –