У меня есть один класс Activity, который должен выполнять определенные функции в соответствии с изменениями, которые он чувствует в классе ConnectivityReceiver
, который расширяет BroadcastReceiver
для изменений в Подключение к ИнтернетуКогда класс реализует интерфейс прослушивателя для прослушивания изменений, записанных в классе, расширяющем BroadcastReceiver, ничего не происходит
Ниже приведены два класса, как реализовать интерфейс в классе ConnectivityReceiver
Но требуемая функция не работает так, как это желательно. Infact, ничего не происходит. Просьба предложить способы сделать это.
MyActivity
public class MyActivity extends AppCompatActivity implements ConnectivityReceiver.ConnectivityReceiverListener { private EditText editText; private static MyActivity mInstance; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); editText=(EditText) findViewById(R.id.editText1); mInstance = this; } public static synchronized MyActivity getInstance() { return mInstance; } public void setConnectivityListener(ConnectivityReceiver.ConnectivityReceiverListener listener) { ConnectivityReceiver.connectivityReceiverListener = listener; } @Override protected void onResume() { super.onResume(); // register connection status listener MyActivity.getInstance().setConnectivityListener(this); } @Override public void onNetworkConnectionChanged(boolean isConnected) { if(isConnected){ editText.setText("Connected"); // TODO: Many Other Stuff } else { editText.setText("Not Connected"); // TODO: Many Other Stuff } } }
ConnectivityReceiver
public class ConnectivityReceiver extends BroadcastReceiver { public static ConnectivityReceiverListener connectivityReceiverListener; public ConnectivityReceiver() { super(); } @Override public void onReceive(Context context, Intent intent) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); if (connectivityReceiverListener != null) { connectivityReceiverListener.onNetworkConnectionChanged(isConnected); } } public static boolean isConnected(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting(); } public interface ConnectivityReceiverListener { void onNetworkConnectionChanged(boolean isConnected); } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="idiot.houses.contactsimport" > <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher1" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MyActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".ConnectivityReceiver" android:enabled="true"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver> </application> </manifest>