2011-08-11 22 views
2

私はそれにサービスアクティビティとスレッドを持っています。問題は、電話機がスリープモードに移行し、スレッドがHTTP要求を送信しなかった場合です。接続できない場合はネットワーク状態を確認しますが、接続許可書を取得すると「権限拒否:設定を保護するにはandroid.permission.WRITE_SECURE_SETTINGSが必要です」というエラーが表示されます。しかし、私はすでにAndroidManifest.xmlにpermissionタグを入れています。私もこれを試してください:スリープモードでAndroidのインターネット接続に問題がありますか?

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

しかし、それは私の問題を解決していません。 phone既にスリープモードに入っています。ここに私の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 
} 
} 

を拡張するアプリケーションがAndroidManifest.xmlandroid.permission.WRITE_SECURE_SETTINGSを要求したにもかかわらず...

答えて

2

を助けてください、それは実行時にこの権限がアプリケーションに付与されることを意味するものではありません。

実際に、この特定のアクセス許可(android.permission.WRITE_SECURE_SETTINGS)を付与するには、アプリケーションにシステム証明書で署名する必要があります。また、通常はデバイスのベンダーだけがそのことを行うことができます(プロダクションデバイスの場合)。

+0

私にとっては不可能ですか?私に何ができる?私のアプリケーションはスリープモードでリクエストしませんでしたか? –

+0

ほとんどの場合、アプリケーションは接続を制御できません。接続が利用可能であるか失われている場合にのみ反応します。スリープモードでのネットワーキングを可能にするのは、Androidとユーザーのビジネスです。 – inazaruk

+0

私の携帯電話がスリープモードになるのはなぜですか?私はすでにパワーマネージャとウェイクロッククラスを使用しています。スリープモードでネットワーキングを許可する方法は? –

関連する問題