清单文件中的广播接收器在一段时间后停止接收

时间:2015-06-23 19:37:34

标签: android broadcastreceiver

我正在开发一个andoid应用程序来阻止对特定号码的所有传出呼叫。为此,我在清单文件中注册了一个接收器。应用程序最初工作正常,接收器显示NEW_OUTGOING_CALL意图。但是,尽快当我的设备进入睡眠模式时,接收器停止工作,除非我再次打开应用程序,否则无法工作。任何人都可以告诉我如何解决此问题?谢谢 以下是我的代码。

public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
         String number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
         if(number.equals("022344")){        
             setResultData(null);
             Toast.makeText(context, "Call to " + number + " is not allowed!", Toast.LENGTH_LONG).show();
         }

    }
    // TODO Auto-generated method stub

}

1 个答案:

答案 0 :(得分:-1)

广播接收器只保证在onReceive方法的持续时间内保持手机清醒。如果您需要在该方法之外进行工作,则需要获取/管理另一个唤醒锁。

为此目的存在Commonsware库。看看:https://github.com/commonsguy/cwac-wakeful/blob/master/README.markdown

请参阅this

否则,您创建了一个扩展Service的类。目的是在不与用户交互或为其他应用程序提供功能的情况下执行更长时间运行的操作。

希望这会对你有所帮助。