我試圖禁用Wifi時,沒有連接到任何網絡後一分鐘。但遇到一些問題。 當我運行該應用程序。它開始工作,並嘗試禁用不連接到任何網絡的WiFi。這意味着我無法阻止它。我有一個首選活動CheckBoxPreference
。這是打開/關閉此功能的設置。我只想在用戶選中複選框時工作。如果取消選中,請停止工作。但現在,它在任何時候都失去控制。 CheckBox對打開/關閉功能不起作用。 這是我的代碼。 mycode有什麼問題?請幫幫我。Android CheckboxPreference不支持廣播接收器
MyActivity.java
public class MyActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.prefes);
Preference preference = (Preference) findPreference(Strings.SETTINGS_WIFI_TIMEOUT);
preference
.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference,
Object object) {
if (Boolean.TRUE.equals(object)) {
Intent intent = new Intent(getApplicationContext(),
MyService.class);
startService(intent);
} else {
stopService(new Intent(getApplicationContext(),
MyService.class));
Toast.makeText(getApplicationContext(),
"Stop service", Toast.LENGTH_SHORT).show();
}
return true;
}
});
}
}
MyService.java
public class MyService extends Service {
int mStartMode; // indicates how to behave if the service is killed
IBinder mBinder; // interface for clients that bind
boolean mAllowRebind; // indicates whether onRebind should be used
@Override
public IBinder onBind(Intent arg0) {
// A client is binding to the service with bindService()
return mBinder;
}
@Override
public void onRebind(Intent intent) {
super.onRebind(intent);
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// The service is starting, due to a call to startService()
Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
ConnectivityManager cm = (ConnectivityManager) MyService.this
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null
&& activeNetwork.isConnectedOrConnecting();
if (isConnected) {
} else {
wifiManager.setWifiEnabled(false);
}
return Service.START_STICKY;
}
@Override
public void onDestroy() {
Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
}
}
WifiWatcher.java
public class WiFiWatcher extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
WifiManager wifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null
&& activeNetwork.isConnectedOrConnecting();
if (isConnected) {
} else {
wifiManager.setWifiEnabled(false);
}
}
}
的Manifest.xml
<receiver android:name="com.example.example.service.WiFiWatcher" android:enabled="true">
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
@dora是的,我有。我更新了Manifest文件。 – 89030943809