В настоящее время я пытаюсь создать Activity на Android с возможностями общения с запущенным BroadcastReceiver
внутри службы, но я не могу это сделать хорошо. Я действительно не знаю, что может быть с тех пор (я думаю), я выполнил все необходимые шаги.Android BroadcastReceiver внутри службы: проблемы
У меня есть другие мероприятия, которые могут общаться с этим BroadcastReceiver
без проблем. Код, который я использую для того, у меня возникли проблемы с заключается в следующем:
Регистрация имени действия в файле ActivityList.java
(Другая деятельность):
public static final String ACTION1 = "com.test.ActionOne";
public static final String ACTION2 = "com.test.ActionTwo";
Регистрация действий с IntentFilter
в файле GestTree.java
, который проходит в Service
:
Внутри 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);
Внутри функции onReceive()
из private class Receptor
из GestTree.java
, которая простирается 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>
Код внутри 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()
класса. Что я ухожу?
Добро пожаловать в StackOverflow! Я улучшил ваш вопрос при правильном форматировании, и последние два абзаца были лишними, поэтому я удалил их - сосредоточиться на проблеме, не нужно писать «спасибо» и т. Д. Вы можете поблагодарить людей за помощь, отстаивая их ответы или принимая окончательный ответ , –
Хорошо, я довольно новичок в этом, извините. @DamianKozlak – Alberto
Почему вы вообще используете «BroadcastReceiver»? почему вы не разговариваете напрямую с вашим «Сервисом»? – pskink