清单中的广播接收者声明

时间:2014-10-27 07:20:46

标签: android broadcastreceiver

我在互联网上找到了这段代码,而且我不知道如何获得此广播接收器的许可..

还是我不需要?

它在SetAlarmActivity类中。

BroadcastReciever br;
private void setup() {
        br = new BroadcastReceiver() {
        @Override
        public void onReceive(Context c, Intent i) {
            Toast.makeText(c, "Rise and Shine!", Toast.LENGTH_LONG).show();
        }
    };
    registerReceiver(br, new IntentFilter("org.example.makwanas.sapalarm") );
    pi = PendingIntent.getBroadcast( this, 0, new Intent("org.example.makwanas.sapalarm"),
            0 );
    am = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
}

2 个答案:

答案 0 :(得分:1)

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        IntentFilter filter = new IntentFilter();
        filter.addAction("Some_Broadcast");
        registerReceiver(reciever, filter);
    }

  @Override
    protected void onDestroy() {
        if (reciever != null) {
            unregisterReceiver(reciever);
            reciever = null;
        }
        super.onDestroy();
    }

答案 1 :(得分:0)

您已经使用registerReceiver在代码中注册了接收器,因此您无需在Manifest文件中再次注册。许可是不同的。

参考documentation of registerReceiver

  

filter - 选择要接收的Intent广播。

因此,您需要提供接收器需要接收广播的意图过滤器。

<强>示例:

IntentFilter filter = new IntentFilter();
filter.addAction("SOME_ACTION");
filter.addCategory("SOME_CATEGORY"); 

您还可以查看此blog以获取更详细的说明和示例。

希望它有所帮助。