2012-01-15 7 views
0

У меня есть плагин, который использует трансляции для связи между основным приложением и плагинами. При запуске основное приложение отправляет намерение вещанияBroadcastReceiver не работает на Android 3.0

sendBroadcast(new Intent("com.mypackage.myapp.custom.intent.action.ADDON_REQ")); 

У каждого приложения плагина есть приемник вещания, зарегистрированный в файле манифеста.

<receiver 
     android:name="IncomingReceiver" 
     android:enabled="true"> 
     <intent-filter> 
      <action android:name="com.mypackage.myapp.custom.intent.action.ADDON_REQ" > 
      </action> 
     </intent-filter> 
    </receiver> 

Приложение плагина не имеет каких-либо действий. Эта структура отлично работает на всех версиях Android ниже 3.0. Начиная с Honeycomb широковещательный приемник в плагине никогда не вызывается. Я не мог исправить это, пока не добавил основное действие в приложении плагина. При активности, определенной в манифесте, существующий широковещательный приемник начал принимать широковещательные сообщения. Какова возможная причина такого поведения? Есть ли способ исправить это без добавления активности?

Спасибо

ответ

1

С сотами вперед необходимо указать флаг, чтобы начать принимающее приложение, если оно уже не работает: Intent.FLAG_INCLUDE_STOPPED_PACKAGES.

Intent intent = new Intent("com.mypackage.myapp.custom.intent.action.ADDON_REQ"); 
intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
sendBroadcast(intent); 
+0

Отлично! Большое спасибо. Жаль, что я сам этого флага не заметил. – basv

Смежные вопросы