0

我有一个带有布局的 Java 类。我想做一个 BroadcastReceiver 来获取来电号码。我如何在我的活动课上做到这一点:

现在我正在尝试这个:

    package com.example.callchecker;

    import android.app.Activity;
    import android.app.Dialog;
    import android.content.Context;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.content.BroadcastReceiver;
    import android.content.Intent;;

    public class Mark_number extends Activity {
        Context context = this ;
        Dialog D =new Dialog(context);
Button btn_dialog = (Button) findViewById(R.id.btn_dialog);
Button btn_dismiss = (Button) D.findViewById(R.id.btn_dismiss);

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mark_number);

    private BroadcastReceiver myR = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub

        }
    };

}
    }

这是正确的方法还是我必须创建另一个扩展 BraodcastRceiver 的类?

    public class My_Receiver extends BroadcastRceiver {

如果要创建另一个类,那么如何从我的主要活动中调用它???

4

2 回答 2

1

如果您将您的对象定义BroadcastReceiver为匿名对象(第一个选项),则只能动态注册它,并且它将在您的应用程序执行期间一直存在。当您的应用程序死机时,它将自动取消注册(当然,如果您愿意,您可以提前取消注册)。

BroadcastReceiver但是,通过定义一个在单独文件中扩展的类(第二个选项),您可以在文件中声明它AndroidManifest.xml,这样即使您的应用程序已死,您也可以接收广播。

哪个更好?取决于你的要求。如果您的应用关闭时不需要接收广播,您可以声明一个匿名对象并动态注册/注销它(更短选项)。但是,如果您确实需要一直接收广播,则必须在另一个类中定义它并在清单中声明它。

于 2013-07-05T19:04:13.460 回答
0

第二个是要走的路!

从您的主要活动向扩展广播接收器的类发送所需事件的发生意图。

于 2013-07-05T18:23:33.087 回答