Android-BroadcastReceiver意外调用
我使用广播来检查连接是否在关闭和打开之间切换,然后将一些数据上传到互联网。问题是这个广播突然被呼叫。我不想在那一刻叫它。我不知道我怎么能在那一刻“锁定”这个广播 以下是我的BroadcastReceiver类的代码:Android-BroadcastReceiver意外调用,android,broadcastreceiver,Android,Broadcastreceiver,我使用广播来检查连接是否在关闭和打开之间切换,然后将一些数据上传到互联网。问题是这个广播突然被呼叫。我不想在那一刻叫它。我不知道我怎么能在那一刻“锁定”这个广播 以下是我的BroadcastReceiver类的代码: class Broadcast_Reciver extends BroadcastReceiver implements Variables { CheckConexion cc; @Override public void onReceive(Cont
class Broadcast_Reciver extends BroadcastReceiver implements Variables {
CheckConexion cc;
@Override
public void onReceive(Context contxt, Intent intent) {
// Cuando hay un evento, lo diferenciamos y hacemos una acción.
if (intent.getAction().equals(SMS_RECEIVED)) {
Sms sms = new Sms(null, contxt);
sms.uploadNewSms(intent);
} else if (intent.getAction().equals(Intent.ACTION_BATTERY_LOW)) {
// st.batterylow(contxt);
} else if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) {
// st.power(1, contxt);
} else if (intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED)) {
// st.power(0, contxt);
} else if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)
|| intent.getAction().equals(Intent.ACTION_PACKAGE_CHANGED)
|| intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {
Database db = new Database(contxt);
if (db.open().Preferences(4)) {
Uri data = intent.getData();
new ListApps(contxt).import_app(intent, contxt, data,
intent.getAction());
}
db.close();
} else if (intent.getAction().equals(
ConnectivityManager.CONNECTIVITY_ACTION)) {
cc = new CheckConexion(contxt);
if (cc.isOnline()) {
/*
* Database db = new Database(contxt); if (db.open() != null) {
* if (db.move() == 1) { new UploadOffline(contxt); }
* db.close();
*/
}
}
}
}
我在Java文件上注册广播,而不是在XML文件中,因为它是一项服务
注册时请查看此代码:
Broadcast_Reciver r = new Broadcast_Reciver();
IntentFilter i = new IntentFilter();
i.addAction(SMS_RECEIVED);
i.addAction(Intent.ACTION_BATTERY_LOW);
i.addAction(Intent.ACTION_POWER_CONNECTED);
i.addAction(Intent.ACTION_POWER_DISCONNECTED);
i.addAction(Intent.ACTION_CALL_BUTTON);
i.addAction(Intent.ACTION_CAMERA_BUTTON);
i.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(r, i);
IntentFilter apps = new IntentFilter();
apps.addAction(Intent.ACTION_PACKAGE_ADDED);
apps.addAction(Intent.ACTION_PACKAGE_CHANGED);
apps.addAction(Intent.ACTION_PACKAGE_REMOVED);
apps.addDataScheme("package");
registerReceiver(r, apps);
如果您不希望您的接收器被呼叫,请将其重新注册。我希望稍后再呼叫,但这次不行:)然后在您希望稍后呼叫时重新注册。你可以随时注销和注册。我怎么做?我的意思是,我想用Java来做。这是可能的?
Context.registerReceiver(…)
和Context.unregisterReceiver(…)
。