приемник вещания никогда не вызывается - PullRequest
2 голосов
/ 15 марта 2011

Я пытаюсь узнать, как Broadcast Receivers работает, но у меня ничего не получается, мои приемники никогда не называются.Ребята, можете ли вы указать мне правильное направление?

Вот код:

Main.java

public class Main extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent intent = new Intent(getApplicationContext(), OutgoingReceiver.class);
    intent.setAction("com.javaGroup.broadcastReceiver.views.TEST");
    sendBroadcast(intent);

  }
}

OutgoingReceiver.java

public class OutgoingReceiver extends BroadcastReceiver {

  public static final String CUSTOM_INTENT = "com.javaGroup.broadcastReceiver.views.TEST";

  @Override
  public void onReceive(Context context, Intent intent) {
    Log.d("HIT OUTGOING-----------------------------------","");
    Intent i = new Intent();
    i.setAction(CUSTOM_INTENT);
    context.sendBroadcast(i);
  }
}

IncomingReceiver.java

public class IncomingReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(OutgoingReceiver.CUSTOM_INTENT)) {
      Log.d("GOT THE INTENT-------------------------------","");
    }
  }
}

Manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.javaGroup.broadcastReceiver.views" android:versionCode="1"
    android:versionName="1.0">
   <uses-sdk android:minSdkVersion="8" />

   <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

   <application android:icon="@drawable/icon" android:label="@string/app_name">
      <activity android:name="com.javaGroup.broadcastReceiver.views.Main" android:label="@string/app_name">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>

      <receiver android:name=".OutgoingReceiver" android:enabled="true">
         <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE"></action>
         </intent-filter>
      </receiver>

      <receiver android:name=".IncomingReceiver" android:enabled="true">
         <intent-filter>
            <action android:name="com.javaGroup.broadcastReceiver.views.TEST"></action>
         </intent-filter>
      </receiver>

    </application>
</manifest>

Где я ошибаюсь?

Ответы [ 2 ]

0 голосов
/ 15 июля 2016

Конечно, вы не получите его, ваш BCR (а именно OutgoingReceiver) не зарегистрирован для прослушивания этого намерения (com.javaGroup.broadcastReceiver.views.TEST), на которое вещает ваша Activity (Main).

Примечание

Вы должны написать больше комментариев в своем коде, чтобы ВЫ могли понять, что вы делаете.В нынешнем виде я могу только догадываться.Вы должны понимать жизненный цикл Деятельности и полное поведение того, что вы пытаетесь сделать.Глядя на ваш код, это не совсем понятно.

0 голосов
/ 15 марта 2011

Вам нужно добавить правильное разрешение в манифест для вашего получателя.См. список разрешений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...