私はよく調べて、これについて見たさまざまな答えを試しましたが、私の場合はどれもうまくいかないようです。私は堅牢なソリューションを探しているので、それ以上の苦労はありません。
一部のタスクを実行するために、アプリがインターネット接続のないWi-Fiネットワーク(ローカルネットワーク)に接続する必要があるという珍しいケースがあります。これが完了すると、接続を切断して、モバイルの代替ネットワークに再接続する必要があります。または、通信ができるようにインターネットに接続できる代替のWi-Fiホットスポット。
私が抱えている問題は、通信キューが通信を開始しようとしているときに、実際にインターネットへのルートがあることを確認する必要があることです(接続の変更によってトリガーされます)
私はConnectivityManagerで次のようなさまざまな呼び出しを試しました。
isConnected();
isAvailable();
しかし、インターネットに対応していないネットワークに接続している場合でも、これらはtrueを返します。
インターネットに対応していないネットワーク(または、登録およびログインしていない場合など、BT Openzoneなどのインターネットに対応していない他のネットワーク)に接続したときに、ルートがないことを確認する方法が必要です。インターネットに接続し、ルートがある場合は、trueを返すことができます。
私が考えた可能性の1つは、pingでしたが、可能であれば、少しすっきりしたものを選びます。
requestRouteToHost()を試しましたが、期待どおりに機能せず、実際には接続を変更しようとしますが、これは私が望んでいることではありません。
ありがとう