3

アプリ A のマニフェスト (<application> 内) には、次の BroadcastReceiver があります。

そして、このレシーバー:

public class RemoteControl extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
      Log.w(TAG, "Look what I did!");
  }
}

私はApp Bからこれをトリガーしようとしています:

public void onClick(View v) {
  Log.w(TAG, "Sending stuff");
  Intent i = new Intent("app.a.remotecontrol");
  i.setData("http://test/url");
  sendBroadcast(i);
}

なんらかの理由で、アプリ B からブロードキャストされたにもかかわらず、アプリ A の onReceive() がトリガーされません。これは何が原因でしょうか?

編集と解決策:ブロードキャストする前に、インテントで setData() を使用したことを書き忘れていました。それは確かに問題でした. setData() を削除するとすぐに、ブロードキャストは意図したとおりに機能しました.

4

1 に答える 1

3

もともと、ブロードキャストする前にインテントで setData() を使用したことを書き忘れていました。それは確かに問題でした. setData() を削除するとすぐに、ブロードキャストは意図したとおりに機能しました.

Intent メタデータの代わりに putExtra() を使用するように切り替えました。

Intent i = new Intent("app.a.remotecontrol");
i.putExtra("url", "http://test/url");
sendBroadcast(i);
于 2010-07-05T12:22:00.037 に答える