Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android BroadcastReceiver内部服务:问题_Java_Android_Android Intent_Service_Broadcastreceiver - Fatal编程技术网

Java Android BroadcastReceiver内部服务:问题

Java Android BroadcastReceiver内部服务:问题,java,android,android-intent,service,broadcastreceiver,Java,Android,Android Intent,Service,Broadcastreceiver,我目前正在尝试在Android中创建一个活动,该活动能够在服务内部与已启动的BroadcastReceiver进行通信,但我无法将其做好。我真的不知道问题出在哪里,因为(我想)我已经采取了所有必要的步骤 此外,我还有其他活动可以与这个广播接收器进行通信,没有任何问题。我对遇到问题的代码使用的代码如下: 在文件ActivityList.java中注册操作名称(另一个活动): 将操作注册到扩展服务的文件gestree.java中的IntentFilter: 内部onCreate(): 在gestre

我目前正在尝试在Android中创建一个活动,该活动能够在服务内部与已启动的
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);

                }
            });
}