0

我正在尝试开发一个android应用程序,我想在拨打电话时从手机发送消息。

目的地号码取自应用程序数据库。

我已经完成了那部分,但我无法在我的活动中访问广播接收器:

public class PARENT_CALLActivity extends Activity 
{
/** Called when the activity is first created. */

String PARENT=null;
EditText edparent;
Button submit;
String parent_number;

public static final String BROADCAST = "sha.pcall.android.action.broadcast";



@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    edparent=(EditText)findViewById(R.id.editText1);
    submit=(Button)findViewById(R.id.btnsubmit);


    submit.setOnClickListener(new OnClickListener() 
    {

        @Override
        public void onClick(View v) 
        {
            // TODO Auto-generated method stub


            PARENT=edparent.getText().toString();   

            MyDabasehandler db=new MyDabasehandler(getApplicationContext());

            if(db.getContact().equals(null))
            {
                db.addContact(new Contacts(PARENT));

            }
            else
            {
                db.editContact();
            }

            Intent intent = new Intent(getApplicationContext(),LocationUpdateReceiver.class);
            sendBroadcast(intent);

             finish();
        }

    });       
}

public class LocationUpdateReceiver extends BroadcastReceiver 
{

    @Override
    public void onReceive(Context context, Intent intent)
    {

        String outgoing_number=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

        Toast.makeText(context, outgoing_number, Toast.LENGTH_LONG).show();
    }

    }

}
4

1 回答 1

0

如果您通过扩展广播接收器来创建单独的类,我建议您在单独的类文件中进行。如果您只想在活动打开时接收广播,请创建一个私有广播接收器变量。就像在这个问题中一样:

在哪里注册广播接收器(活动生命周期乐趣)

在后一种情况下,您可以使用称为 registerreceiver 的方法注册广播接收器变量。 链接在这里

这一切实际上取决于要求。如果即使您的应用程序已关闭(或活动不在前台),您也想接收广播,您需要在清单文件中注册广播接收器,如下所示:

    <receiver 
        android:name="com.example.myapp.GCMBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="com.example.myapp" />
        </intent-filter>
    </receiver>

这是一个谷歌云消息广播接收器的例子。您还需要添加意图过滤器,以指定要接收的广播类型。在上面的例子中,广播接收器可以接收(见intent-filter标签)两个带有动作的意图:

"com.google.android.c2dm.intent.RECEIVE" 

"com.google.android.c2dm.intent.REGISTRATION"

完成此操作后,您可以在广播接收器的重写 onReceive() 方法中完成任务。

希望这可以帮助。

于 2013-02-07T12:34:31.223 回答