![](/img/trans.png)
[英]Android Service + BroadcastReceiver, PhoneStateListener
[英]Android BroadcastReceiver inside service: issues
我目前正在尝试在Android中创建一个Activity,它具有与服务内部启动的BroadcastReceiver
进行通信的功能,但我无法做得很好。 我真的不知道问题是什么(我认为)我已经遵循了所有必要的步骤。
另外,我有其他活动可以毫无问题地与这个BroadcastReceiver
通信。 我正在使用的代码是我遇到的问题如下:
在文件ActivityList.java
注册操作的名称(另一个活动):
public static final String ACTION1 = "com.test.ActionOne";
public static final String ACTION2 = "com.test.ActionTwo";
在扩展Service
的文件GestTree.java
使用IntentFilter
注册操作:
在onCreate()
里面:
IntentFilter filter;
filter = new IntentFilter();
filter.addAction(ActivityList.ACTION1);
filter.addAction(ActivityList.ACTION2);
rec = new Receptor(); // This is a class which extends BroadcastReceiver
registerReceiver(receptor, filter);
在GestTree.java
的private class Receptor
的函数onReceive()
内部,它扩展了BroadcastReceiver
:
public final void onReceive(final Context context, final Intent intent) {
String action = intent.getAction();
if (action.equals(ActivityList.ACTION1)) {
Log.d(tag, "Test Passed!");
}
}
AndroidManifest.xml
中的服务定义和Activity State3Activity
(我想与服务通信的那个):
<activity
android:name="State3Activity"
android:label="@string/app_name" >
</activity>
<service
android:name="GestTree"
android:enabled="true"
android:label="@string/app_name" >
</service>
State3Activity.java
代码:
public class State3Activity extends Activity {
Button mButton;
EditText editText_Name;
EditText editText_Desc;
private final String tag = this.getClass().getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.state3_layout);
mButton = (Button)findViewById(R.id.button_myButton);
editText_Nombre = (EditText)findViewById(R.id.editText_Name);
editText_Descripcion = (EditText)findViewById(R.id.editText_Desc);
mButton.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
Intent intent;
intent = new Intent();
intent.setAction(ActivityList.ACTION1);
// I have tried with all this combination of lines
// but none of them works
//intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
//intent.setClass(State3Activity.this, GestTree.class);
//intent.addCategory(Intent.CATEGORY_DEFAULT);
sendBroadcast(intent);
}
});
}
问题出在哪里。 当我按下按钮时,意图永远不会进入类的onReceive()
函数。 我要离开的是什么?
你确定你的服务开始了吗? 如果您尚未启动该服务,则不会执行onCreate()
方法,也不会注册接收方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.