6

我需要将广播从我的一个应用程序发送到另一个应用程序..任何帮助!我的应用程序包是 1)com.demo.database 和 2)com.demo.list

 Intent themesIntent = new Intent(ThemesManager.THEMES_UPDATED);
 themesIntent.putExtra("package", packageName);
 ctx.sendBroadcast(themesIntent);

不工作..

编辑:

<receiver android:name="com.sample.ThemesUpdatedReceiver">
        <intent-filter>
            <action android:name="com.sample.THEMES_UPDATED"/>
        </intent-filter>
    </receiver>
4

3 回答 3

5

@Ajit:嗨,从 Android API 3.0 [API 级别 11] 开始,如果一个应用程序从未启动过一次,那么它的 BroadcastReceiver 就无法接收事件。因为,在你的情况下,你的应用程序没有启动器活动,所以可能是正是这种情况导致拒绝事件。

除此之外,请尝试使用以下方法:您在创建 Intent 对象时传递了该常量值。而是将其传递给方法 intent.setAction();

希望这可以帮助。

于 2014-12-13T15:16:54.680 回答
3

我认为每个发送的广播都会被所有应用程序接收,除非您 setPackage 为特定包广播的发送意图。

我没有收到广播,因为我的另一个应用程序没有启动(没有启动器活动)。

于 2013-10-11T10:41:12.583 回答
2

如果你要广播,它通常遵循你有一个发送者和接收者。你已经发布了看起来像发件人的东西..

发件人(您从哪里发送):

Intent toret = new Intent();
toret.setAction("com.myapp.foo");
toret.putExtra("bar", "fizzbuzz");
sendBroadcast(toret);

接收器(例如onResume()

    IntentFilter intentFilter = new IntentFilter("com.myapp.foo");
    BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // ... do something with the intent
        }
    // register the receiver
    this.registerReceiver(receiver , intentFilter);

发送者总是发送,接收者需要注册来监听意图。

于 2013-10-10T19:33:30.583 回答