从一个apk /包发送广播到另一个apk /包

时间:2013-10-10 19:13:53

标签: android package broadcast

我需要将我的一个应用程序的广播发送到另一个应用程序..任何帮助! 我的应用程序包是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>

3 个答案:

答案 0 :(得分:5)

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

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

中传递它

希望这有帮助。

答案 1 :(得分: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);

发件人总是发送,接收者需要注册才能听取意图。

答案 2 :(得分:2)

我认为所有应用程序都会收到每个发送的广播,除非你将setPackage设置为特定包广播的发送意图。

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