Java Android BroadcastReceiver内部服务:问题
我目前正在尝试在Android中创建一个活动,该活动能够在服务内部与已启动的Java Android BroadcastReceiver内部服务:问题,java,android,android-intent,service,broadcastreceiver,Java,Android,Android Intent,Service,Broadcastreceiver,我目前正在尝试在Android中创建一个活动,该活动能够在服务内部与已启动的BroadcastReceiver进行通信,但我无法将其做好。我真的不知道问题出在哪里,因为(我想)我已经采取了所有必要的步骤 此外,我还有其他活动可以与这个广播接收器进行通信,没有任何问题。我对遇到问题的代码使用的代码如下: 在文件ActivityList.java中注册操作名称(另一个活动): 将操作注册到扩展服务的文件gestree.java中的IntentFilter: 内部onCreate(): 在gestre
BroadcastReceiver
进行通信,但我无法将其做好。我真的不知道问题出在哪里,因为(我想)我已经采取了所有必要的步骤
此外,我还有其他活动可以与这个广播接收器
进行通信,没有任何问题。我对遇到问题的代码使用的代码如下:
在文件ActivityList.java
中注册操作名称(另一个活动):
将操作注册到扩展服务的文件gestree.java
中的IntentFilter
:
内部onCreate()
:
在gestree.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!");
}
}
服务和活动的定义State3Activity
(我想与服务通信的活动)位于AndroidManifest.xml
:
<activity
android:name="State3Activity"
android:label="@string/app_name" >
</activity>
<service
android:name="GestTree"
android:enabled="true"
android:label="@string/app_name" >
</service>
问题就在这里。当我按下按钮时,意图从未进入类的onReceive()
函数。我要离开什么?您确定您的服务已启动吗?如果尚未启动服务,则不会执行onCreate()
方法,并且不会注册接收者。欢迎使用StackOverflow!我用正确的格式改进了你的问题,最后两段也没有必要,所以我删除了它们——专注于问题,不需要写“谢谢”等。你可以通过投票或接受最终答案来感谢别人的帮助。好吧,我对这一点很陌生,对不起@Damiankozlak为什么使用广播接收器
?你为什么不直接与你的服务
对话?你是在一个单独的java文件的activity类中定义广播侦听器吗?我不知道,可能是由于上下文错误,你是否尝试过在AndroidManifest.xml中用意图过滤器声明广播侦听器好的,是的,就是Lauren!我不得不在另一个地方开始服务,在那里我做了发送广播!非常感谢你
public final void onReceive(final Context context, final Intent intent) {
String action = intent.getAction();
if (action.equals(ActivityList.ACTION1)) {
Log.d(tag, "Test Passed!");
}
}
<activity
android:name="State3Activity"
android:label="@string/app_name" >
</activity>
<service
android:name="GestTree"
android:enabled="true"
android:label="@string/app_name" >
</service>
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);
}
});
}