Zarejestrowałem moim BroadcastReceiver
w AndroidManifest.xml
jak tenJak zatrzymać BroadcastReceiver ręcznie w android
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example" android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:theme="@android:style/Theme.Light">
<activity android:name=".WiFiDemo" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.example.WiFiScanReceiver">
<intent-filter>
<action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"> </uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
chcę zatrzymać ten BroadcastReceiver
stosując inne wejście aplikacji jak zatrzymać ten odbiornik programowo?
tutaj jest mój kod Odbiornik:
public class WIFIBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction()
.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
Intent ssIntent = new Intent(context, com.Activity.class);
ssIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(ssIntent);
}
}
}
odpowiedzi :: muszę dodać pole sharedprefernce i zapisać dwa ciąg i walidacji w sprawie odbierania metodę Oto mój kod
druga aplikacja :
final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager()
.findPreference("checkboxPref");
// ...
checkboxPref
.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference,
Object newValue) {
if (newValue.toString().equals("true")) {
// String value = sp.getString(key, null);
sharedPreferences = getSharedPreferences(
PREFS_READ, Context.MODE_WORLD_READABLE);
Editor prefsPrivateEditor = sharedPreferences.edit();
prefsPrivateEditor.putString(KEY_READ1, "true");
prefsPrivateEditor.commit();
Toast.makeText(getApplicationContext(),
"CB: " + "true", Toast.LENGTH_SHORT).show();
} else {
sharedPreferences = getSharedPreferences(
PREFS_READ, Context.MODE_WORLD_READABLE);
Editor prefsPrivateEditor = sharedPreferences.edit();
prefsPrivateEditor.putString(KEY_READ1, "false");
prefsPrivateEditor.commit();
Toast.makeText(getApplicationContext(),
"CB: " + "false", Toast.LENGTH_SHORT)
.show();
}
return true;
}
});
kod potwierdzający w pierwszej aplikacji wewnątrz onReceive
metoda:
public class WIFIBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction()
.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
sharedPreferences = otherAppsContext.getSharedPreferences(
PREFS_READ, Context.MODE_WORLD_WRITEABLE);
String scaningAction = sharedPreferences.getString(KEY_READ1, null);
if (scaningAction.equals("true")) {
Intent ssIntent = new Intent(context, com.Activity.class);
ssIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(ssIntent);
}
}
}
}
to jest moja potrzeba. Ale nie jestem w stanie wyrejestrować odbiornika. bez żadnej aktywności ta odpowiedź będzie pomocna dla kogoś.
jak stworzyć WiFiScan Obiekt odbiorcy? –
To jest twój odbiornik do brodcastu, który budowałeś wcześniej (w kodzie, do którego się podłączasz) – Jviaches
Nie zapomnij go włączyć, gdy aplikacja uruchomi się ponownie lub funkcja onReceive nie zostanie wywołana – tyczj