2011-08-11 115 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

那麼爲什麼我的手機進入睡眠模式?我已經使用電源管理器和喚醒鎖類。我如何讓睡眠模式的網絡? –