繁体   English   中英

Android BroadcastReceiver内部服务:问题

[英]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.javaprivate 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM