我已经像这样在AndroidManifest.xml
中注册了我的BroadcastReceiver
<?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>
我希望能够通过其他应用程序输入停止这个BroadcastReceiver
,如何以编程方式停止这个接收器?
以下是我的接收器代码:
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);
}
}
}
答案:: 我已经添加了共享首选项复选框,并在onReceive方法中保存两个字符串并进行验证,以下是我的代码:
第二个应用程序:
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;
}
});
在onReceive
方法中验证第一个应用程序的代码:
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);
}
}
}
}
这是我的需求。但是我无法注销广播接收器。没有活动,任何答案都将对某些人有所帮助。