2017-05-10 27 views
0

BroadcastReceiverクラスがアプリの最初の起動時に動作しません。私はアプリの起動時に同時にインターネット接続をチェックしたい。問題を手伝ってください。ブロードキャストレシーバが最初のアプリの起動時に動作しない

NetworkchangeListener.Java 

public class NetworkChangeListener extends BroadcastReceiver { 

public static boolean isNetworkConnected= false ; 

@Override 
public void onReceive(Context context, Intent intent) { 

    isNetworkConnected = isNetworkAvailable(context); 
    if(isNetworkConnected){ 
     Toast.makeText(context, "Connected", Toast.LENGTH_SHORT).show(); 
    } 
    else{ 
     Toast.makeText(context, "Not Connected", Toast.LENGTH_SHORT).show(); 
    } 

} 


private boolean isNetworkAvailable(Context context) { 
    ConnectivityManager connectivityManager 
      = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null; 
} 

}

以下は、私がネットワークの状態を変更したときにそれが正常に動作していますが、最初の実行時のために、それは働いていないんだ、私のManifest.xmlファイル

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.dcastalia.clienttest"> 

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name=".NetworkChangeListener"> 
      <intent-filter> 
       <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 

です。

+0

以下のリンクを参照することができ、起動時のみCONNECTIVITY_CHANGE上で実行されます。インテントフィルタを追加したため、インテントフィルタを変更してください。 –

+0

インテントフィルタを変更する理由は何ですか?私は主な問題は、(私もこれを持っていた)、いくつかのデバイス(例えばHuawei)で、あなたは受信機が動作する前にアイコンを最初に押してアプリを開く必要があると思う。私はそれの背後にある意図、たぶんバグを知っていません... – Opiatefuchs

答えて

0

アプリのintent-filters.Toチェックインターネット接続で追加として放送受信機は、あなたが期待どおりに働いてHow to check if internet is available or not in app startup in android?

+0

私はアプリケーションの起動とアプリケーションの実行状態でも接続ステータスを継続的に取得したいと思います。私は一度それをチェックしたくない。 –

関連する問題