1

私は自分の放送受信機に問題があります。BroadcastReceiverにインターネットアクセスがありません

私は午前6時にアラームを設定しました。インターネットからデータをダウンロードして処理するだけのブロードキャストレシーバーを起動する必要があります。

アラームを3pmに設定すると、正常に動作します。しかし問題は午前6時です。ネットワークに接続できないためダウンロードできません。

ダウンロードを試行する前に部分的なスリープ解除ロックを実行します。これに関連することができますか?電話が深い睡眠に入り、部分的な起床ロックでは不十分ですか?

それ以外に何ができますか?私はネットワークデータを有効にして電話を離れるように二度チェックしました。夜間にメールとwhatsappを受け取ります。

アンドロイドにその接続を回復させる方法はありますか?

ヒントやヘルプは大歓迎です!

お勧めします、 フェデリコ。

マイコード:BroadcastReceiverから

OnReceive方法:

@Override 
public void onReceive(Context context, Intent intent) { 
    ... 
    // acquire partial wake lock 
    _PowerManager.acquire(); 

    // check internet access 
    if (!_Utils.isDataEnabled()){ 
     // here is where it enters at 6am, isDataEnabled return false, so it enters here 
     _Log.d("_BroadcastReceiver_Synchronize:onReceive","No internet, cancel sinc"); 
     // release partial wake lock 
     _PowerManager.release(); 
     return; 
    } 

    // excecute async task that downloads data 
    _WebServicesGet ws = new _WebServicesGet(null, null, null); 
    ws.syncAll(this, false); 
    return; 
} 

が_Utils.isDataEnabled:

public static Boolean isDataEnabled() { 
    // this method returns false at 6am 
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
} 
+0

マニフェストでインターネット許可を設定しましたか? – Gonzalo

+1

https://developer.android.com/training/monitoring-device-state/doze-standby.html – CommonsWare

+0

Gonzaloありがとうございます。はい、私のアプリはインターネットのアクセス許可を持っています。 –

答えて

1

CommonsWareは、右のトラックに私を置きます。

答えはドーズモードでした:アンドロイド6以降では、アプリケーションがインターネットアクセス(他のものの中でも)を受け取らないドーズモードに入ることがあります。したがって、アラームとウェイクロックを設定すると、CPUにアクセスできますが、インターネットにアクセスすることはできません。 official documentationから

:ドキュメントには、デバイスは、それに接続されている場合、居眠りモードに入りませんが、私の場合には、それはプラグの状態にもかかわらず、入力しなかったことを言う

ユーザーが抜か機器を離れた場合と、一定の時間静止し、画面が消灯しているとき、装置はドーズモードに入る。

これは混乱していました。

いずれにしても、私は自分のアプリをホワイトリストに登録しようとしましたが、うまく動作し始めました。午前6時にアラームが消え、放送受信機にインターネットアクセスが可能になりました。 official documentationから再び

ユーザーが手動で設定>電池> バッテリーの最適化にホワイトリストを設定することができます。あるいは、システムは、ユーザーにホワイトリストを求めるようにアプリケーションに指示する方法を提供します( )。

私は自分自身を明確にし、これが他の人に役立つことを願っています。

CommonsWareに感謝します。

関連する問題