我正在尝试开发一个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();
}
}
}
答案 0 :(得分:0)
如果您通过扩展广播接收器创建单独的类,我建议您在单独的类文件中执行此操作。如果您只想在活动打开时接收广播,请创建一个私有广播接收器变量。喜欢这个问题:
Where to register a BroadcastReceiver (Activity lifecycle fun)
在后一种情况下,您可以使用名为registerreceiver的此方法注册广播接收器变量。 Here is the link
这一切实际上取决于要求。如果您想要接收广播,即使您的应用已关闭(或活动不在前台),您还需要在清单文件中注册广播接收器,如下所示:
<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()方法中完成任务。
希望这有帮助。