[英]How do i unregister broadcast receiver in this code?
I have dynamically registered my broadcast receiver , now how do i unregister it . 我已经动态注册了我的广播接收器,现在如何注销它。 i have used unregisterReceiver(this).
我用过unregisterReceiver(this)。 but i dont think it works.
但我不认为这行得通。
IntentFilter filter = new IntentFilter("SENT");
//---when the SMS has been sent---
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent waiting room",
Toast.LENGTH_SHORT).show();
unregisterReceiver(this);
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "No Network Detected",
Toast.LENGTH_SHORT).show();
break;
}
}
}, filter);
You can use 您可以使用
unregisterReceiver(nameofyourbroadcastreceiver);
Sample Code 样例代码
public class MyActivity extends Activity
{
private final BroadcastReceiver mybroadcast = new SomeBroadcastReceiver();
public void onResume()
{
IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(mybroadcast, filter);
}
public void onPause()
{
unregisterReceiver(mybroadcast);
}
}
Your code: 您的代码:
IntentFilter filter = new IntentFilter("SENT");
BroadcastReceiver br = new BroadcastReceiver() {
@Override
public void onReceive (Context context, Intent intent) {
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent waiting room",
Toast.LENGTH_SHORT).show();
unregisterReceiver(br);
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic failure",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "No Network Detected",
Toast.LENGTH_SHORT).show();
break;
}
}
};
registerReceiver (br, filter);
in public abstract void unregisterReceiver(BroadcastReceiver receiver) you must provide a BroadcastReceiver
instance as the first parament. 在公共抽象void unregisterReceiver(BroadcastReceiver接收器)中,您必须提供一个
BroadcastReceiver
实例作为第一个参数。
you can write like this: 您可以这样写:
BroadcastReceiver mReceiver= new BroadcastReceiver(){
...
}
unregisterReceiver(mReceiver);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.