アプリでバックグラウンドデータの収集を行い、バックグラウンド更新やデータローミングの実行などのユーザーネットワーク設定のサポートを追加しています。私はすでに、次のチェックを持っている:マニフェストで必要なエントリを持つAndroidのネットワーク使用設定を尊重する方法
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm.getBackgroundDataSetting()) {
...
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
これは、すべてが正常に動作しているように見えるが、私は何かをチェックする必要がある場合、私は不思議でしたか?私はデータローミングのチェックについて心配していましたが、docsの状態でnetworkInfo.isAvailable()
がこれをチェックしています。ネットワーク設定のために実装する必要がある他のチェックはありますか?私が知っておくべきこのエリアの他のものは何ですか?
良い質問。ネットワーク情報にはisRoamingメソッドもありません。 (そして、ネットワークプロトコルが異なる可能性があるので、これが問題になる可能性がある場合は、北米地域のみにアプリを開発していますか?) –
はい、isRoaming()メソッドがあります。ネットワークがローミング中で、ユーザがデータローミングを無効にしている場合、 'networkInfo.isAvailable()'が 'false'を返すように見える限り使用していません。このアプリは英国のみです - 私は**これは私がこれまでに持っているコードには影響しているとは思っていませんが、回答の中にいくつかのチェックを実装すると、別のNETWORK_TYPE 。 –
私は好奇心が強いです。私はソースコードとドキュメントを参照しました。 isNetworkAvilableは、あなたがホームネットワークにいるかどうかをチェックするので、信頼できるものです。 (結局、失敗した場合、あなたのアプリケーションだけが問題になるわけではありません;)) –