2012-03-20 11 views
5

と呼ばれることはありません:放送受信機onReceive()は私がICSではなく、以前のバージョンでは、この問題を取得

のApp1から、私は放送を送信するとApp 2活動でそれを受け取るしようとしています。しかし、onReceiveはApp 2のアクティビティで呼び出されることはありません。

すべてを正しく指定したにもかかわらず、ブロックのonReceiveが呼び出されることを理解できません。

は、私が最初にしてBroadcastSend

私は、これははるかに高く評価されて解決するのに役立つだろうすべてのヘルプBroadcastReceiveを実行します。

のApp1送る活動

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

    Intent i = new Intent(); 
    i.setAction("edu.ius.rwisman.custom.intent.action.TEST"); 
    i.putExtra("url","ww.ius.edu"); 
    sendBroadcast(i); 
} 

のApp 2は、活動に受信

public class BroadcastReceive extends BroadcastReceiver{ 
// Display an alert that we've received a message.  
@Override 
public void onReceive(Context context, Intent intent){ 
    System.out.println("Inside onReceive"); 
    String url = intent.getExtras().getString("url"); 
    Toast.makeText(context, "BroadcastReceive:"+url, Toast.LENGTH_SHORT).show(); 
    } 

マニフェスト

<?xml version="1.0" encoding="utf-8"?> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <receiver android:name="edu.ius.rwisman.BroadcastReceive.BroadcastReceive" android:enabled="true" android:exported="true"> 
     <intent-filter> 
      <action android:name="edu.ius.rwisman.custom.intent.action.TEST"/> 
     </intent-filter> 
    </receiver> 
</application> 
のApp 2のICSでは

答えて

10

アプリが少なくともアンドロイド3.1以上once.in手動で開始されるまで、あなたが放送を受信しません、彼らが実行されたことがない、または力停止している場合、アプリケーションは停止状態にあります。これらのアプリはブロードキャストの対象から除外されます。このようなIntent.FLAG_INCLUDE_STOPPED_PACKAGESフラグを使用すると、これらを含めることができます。

i.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
+0

この問題は修正されています。最初にreceiveアクティビティとsendアクティビティを実行します。なぜこの問題に直面したのですか? – user264953

+0

アプリケーションは、最初にインストールされたときに停止状態ですが、まだ起動されていない場合や、ユーザーによって手動で停止された場合(アプリケーションの管理)... http://developer.android.com/sdk/android- 3.1.html#launchcontrols – 5hssba

+2

しかし、ブロードキャストの登録時にこのフラグをマニフェストに含めるには –